diff --git a/Config/FilterPlugin.ini b/Config/FilterPlugin.ini index 61919c3f..20f78e07 100644 --- a/Config/FilterPlugin.ini +++ b/Config/FilterPlugin.ini @@ -6,10 +6,15 @@ ; /README.txt ; /Extras/... ; /Binaries/ThirdParty/*.dll -/Doc/*.adoc +/Doc/assets/... +/Doc/doc_root/en-us/*.mdx +/Doc/doc_root/en-us/getting-started/*.mdx +/Doc/fonts/... /Doc/img/... -/Doc/documentation.html +/Doc/js/... +/Doc/.nojekyll /Doc/EULA_20220712_FONT-modio.pdf +/Doc/index.html /README.adoc /.gitignore /.clang-format diff --git a/Doc/EULA_20220712_FONT-modio.pdf b/Doc/EULA_20220712_FONT-modio.pdf new file mode 100644 index 00000000..ef2a9e3c Binary files /dev/null and b/Doc/EULA_20220712_FONT-modio.pdf differ diff --git a/Doc/assets/images/ShowPlatformStoreUI-513a06081ba9b2c613e5e4da85b0ca4b.png b/Doc/assets/images/ShowPlatformStoreUI-513a06081ba9b2c613e5e4da85b0ca4b.png new file mode 100644 index 00000000..e1851dde Binary files /dev/null and b/Doc/assets/images/ShowPlatformStoreUI-513a06081ba9b2c613e5e4da85b0ca4b.png differ diff --git a/Doc/assets/images/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions-0f1f9aaa5bd0c3c642e84ee61ceff02e.png b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions-0f1f9aaa5bd0c3c642e84ee61ceff02e.png deleted file mode 100644 index 48104bbc..00000000 Binary files a/Doc/assets/images/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions-0f1f9aaa5bd0c3c642e84ee61ceff02e.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions-76f5950618826972f9a40bde21e49d4d.png b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions-76f5950618826972f9a40bde21e49d4d.png new file mode 100644 index 00000000..a6a3f56a Binary files /dev/null and b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions-76f5950618826972f9a40bde21e49d4d.png differ diff --git a/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetBackgroundThread-e499bbf6ceac1c576056f97dbfce48d3.png b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetBackgroundThread-e499bbf6ceac1c576056f97dbfce48d3.png new file mode 100644 index 00000000..a32f2528 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetBackgroundThread-e499bbf6ceac1c576056f97dbfce48d3.png differ diff --git a/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetPortal-c2c8e44fc927853c409eda072d2e604b.png b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetPortal-c2c8e44fc927853c409eda072d2e604b.png deleted file mode 100644 index 92f2537c..00000000 Binary files a/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetPortal-c2c8e44fc927853c409eda072d2e604b.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetPortal-f95434662488c3c1596eda6b76b8d3de.png b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetPortal-f95434662488c3c1596eda6b76b8d3de.png new file mode 100644 index 00000000..8462dd45 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetPortal-f95434662488c3c1596eda6b76b8d3de.png differ diff --git a/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier-48bd0814f5db0ec0f8a97d2560a396f7.png b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier-48bd0814f5db0ec0f8a97d2560a396f7.png new file mode 100644 index 00000000..4010a428 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier-48bd0814f5db0ec0f8a97d2560a396f7.png differ diff --git a/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier-b89970e3d3bb90d64d62b75ce76c02ee.png b/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier-b89970e3d3bb90d64d62b75ce76c02ee.png deleted file mode 100644 index c545e096..00000000 Binary files a/Doc/assets/images/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier-b89970e3d3bb90d64d62b75ce76c02ee.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob-46906f25f1b2ce9866b41ebe2954f9f0.png b/Doc/assets/images/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob-46906f25f1b2ce9866b41ebe2954f9f0.png deleted file mode 100644 index 2481e581..00000000 Binary files a/Doc/assets/images/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob-46906f25f1b2ce9866b41ebe2954f9f0.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob-935a953f1fa434ce4627432800c74b48.png b/Doc/assets/images/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob-935a953f1fa434ce4627432800c74b48.png new file mode 100644 index 00000000..c41da116 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob-935a953f1fa434ce4627432800c74b48.png differ diff --git a/Doc/assets/images/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync-695ef7f0e8b10ac403d0fd21329dfcf0.png b/Doc/assets/images/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync-695ef7f0e8b10ac403d0fd21329dfcf0.png new file mode 100644 index 00000000..75b0e4e7 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync-695ef7f0e8b10ac403d0fd21329dfcf0.png differ diff --git a/Doc/assets/images/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync-ccc2c7187edf30a0c9472a75052ae921.png b/Doc/assets/images/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync-ccc2c7187edf30a0c9472a75052ae921.png deleted file mode 100644 index e32ec8c9..00000000 Binary files a/Doc/assets/images/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync-ccc2c7187edf30a0c9472a75052ae921.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioModProgressInfoLibrary_GetTotalProgress-bf65b6793b2e6f41218751755daf9136.png b/Doc/assets/images/nd_img_ModioModProgressInfoLibrary_GetTotalProgress-bf65b6793b2e6f41218751755daf9136.png new file mode 100644 index 00000000..3ee23c47 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioModProgressInfoLibrary_GetTotalProgress-bf65b6793b2e6f41218751755daf9136.png differ diff --git a/Doc/assets/images/nd_img_ModioModProgressInfoLibrary_GetTotalProgress-c2dfe9ae5100fa60bf076bdd500a7010.png b/Doc/assets/images/nd_img_ModioModProgressInfoLibrary_GetTotalProgress-c2dfe9ae5100fa60bf076bdd500a7010.png deleted file mode 100644 index 6b588d10..00000000 Binary files a/Doc/assets/images/nd_img_ModioModProgressInfoLibrary_GetTotalProgress-c2dfe9ae5100fa60bf076bdd500a7010.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSDKLibrary_GetMonetizationPurchaseCategory-51bd9f941653bd18b5e75f34e6c26c39.png b/Doc/assets/images/nd_img_ModioSDKLibrary_GetMonetizationPurchaseCategory-51bd9f941653bd18b5e75f34e6c26c39.png new file mode 100644 index 00000000..888e1e4c Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSDKLibrary_GetMonetizationPurchaseCategory-51bd9f941653bd18b5e75f34e6c26c39.png differ diff --git a/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory-43d8d48bf01808ca9f889c44c78586e4.png b/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory-43d8d48bf01808ca9f889c44c78586e4.png new file mode 100644 index 00000000..d1dcc3ea Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory-43d8d48bf01808ca9f889c44c78586e4.png differ diff --git a/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory-4f094cc73d91d2c82cbefe34bc1c172f.png b/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory-4f094cc73d91d2c82cbefe34bc1c172f.png deleted file mode 100644 index 91de5136..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory-4f094cc73d91d2c82cbefe34bc1c172f.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync-31680cc49f35d2f21d91b6d2fbb9c98d.png b/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync-31680cc49f35d2f21d91b6d2fbb9c98d.png new file mode 100644 index 00000000..4747bac8 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync-31680cc49f35d2f21d91b6d2fbb9c98d.png differ diff --git a/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync-5d1e90118f4f934bf9d50957b51391bb.png b/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync-5d1e90118f4f934bf9d50957b51391bb.png deleted file mode 100644 index 7a0a604b..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync-5d1e90118f4f934bf9d50957b51391bb.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_CloseTempModSet-91ea6860470e77c26c197cb71b0b9c3e.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_CloseTempModSet-91ea6860470e77c26c197cb71b0b9c3e.png deleted file mode 100644 index 489c0c56..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_CloseTempModSet-91ea6860470e77c26c197cb71b0b9c3e.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_CloseTempModSet-cd8ef129b913668bdc811207a7c16224.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_CloseTempModSet-cd8ef129b913668bdc811207a7c16224.png new file mode 100644 index 00000000..db66c41a Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_CloseTempModSet-cd8ef129b913668bdc811207a7c16224.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync-83a8301ecba540f8a8592822d3184974.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync-83a8301ecba540f8a8592822d3184974.png new file mode 100644 index 00000000..df1e4049 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync-83a8301ecba540f8a8592822d3184974.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync-959793d6bae5805e609d6948f6071617.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync-959793d6bae5805e609d6948f6071617.png deleted file mode 100644 index 6cc30a31..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync-959793d6bae5805e609d6948f6071617.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync-75895154b0ad395e68b9055871a93dab.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync-75895154b0ad395e68b9055871a93dab.png deleted file mode 100644 index 9519f93a..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync-75895154b0ad395e68b9055871a93dab.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync-d188629fa0a5c265b944f648d53b6440.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync-d188629fa0a5c265b944f648d53b6440.png new file mode 100644 index 00000000..8e219a39 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync-d188629fa0a5c265b944f648d53b6440.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync-a0630066f06cad861a8769948f32f175.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync-a0630066f06cad861a8769948f32f175.png deleted file mode 100644 index 8175f93c..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync-a0630066f06cad861a8769948f32f175.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync-be9588fa4dfac1ac91a102ce0ebd6671.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync-be9588fa4dfac1ac91a102ce0ebd6671.png new file mode 100644 index 00000000..b5a91d2d Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync-be9588fa4dfac1ac91a102ce0ebd6671.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync-5fe3ab434879bb8d9a79b0ee50739d4c.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync-5fe3ab434879bb8d9a79b0ee50739d4c.png new file mode 100644 index 00000000..a0ab878c Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync-5fe3ab434879bb8d9a79b0ee50739d4c.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync-f9b903e0e2833d3380b115b75ab00e07.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync-f9b903e0e2833d3380b115b75ab00e07.png deleted file mode 100644 index 678e320f..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync-f9b903e0e2833d3380b115b75ab00e07.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_InitTempModSet-29cf256b95cf42b433c622b1cae7f884.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_InitTempModSet-29cf256b95cf42b433c622b1cae7f884.png deleted file mode 100644 index a9e4b009..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_InitTempModSet-29cf256b95cf42b433c622b1cae7f884.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_InitTempModSet-34fdcb787f07da43afb64dd9d76ea4d1.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_InitTempModSet-34fdcb787f07da43afb64dd9d76ea4d1.png new file mode 100644 index 00000000..70d24793 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_InitTempModSet-34fdcb787f07da43afb64dd9d76ea4d1.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_ListAllModsAsync-1ad7bc96d31f8ae60bfae27078fc2b9f.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_ListAllModsAsync-1ad7bc96d31f8ae60bfae27078fc2b9f.png new file mode 100644 index 00000000..7efcf565 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_ListAllModsAsync-1ad7bc96d31f8ae60bfae27078fc2b9f.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_ListAllModsAsync-316f57d416ba0ae025eb48f00d1c9aa2.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_ListAllModsAsync-316f57d416ba0ae025eb48f00d1c9aa2.png deleted file mode 100644 index a6b764ca..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_ListAllModsAsync-316f57d416ba0ae025eb48f00d1c9aa2.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync-554e56025bd496213a76378b849c929b.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync-554e56025bd496213a76378b849c929b.png new file mode 100644 index 00000000..918f2734 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync-554e56025bd496213a76378b849c929b.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync-79b62f72079482576f25788aa013f789.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync-79b62f72079482576f25788aa013f789.png deleted file mode 100644 index 37f1cc60..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync-79b62f72079482576f25788aa013f789.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_PurchaseModAsync-1fc3c7edad752491c5d369a742e7d265.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_PurchaseModAsync-1fc3c7edad752491c5d369a742e7d265.png deleted file mode 100644 index 7c9b9ce3..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_PurchaseModAsync-1fc3c7edad752491c5d369a742e7d265.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_PurchaseModAsync-d05b70f5ff78fce8ad562c2c6597af48.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_PurchaseModAsync-d05b70f5ff78fce8ad562c2c6597af48.png new file mode 100644 index 00000000..e9e01a82 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_PurchaseModAsync-d05b70f5ff78fce8ad562c2c6597af48.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_QueryTempModSet-0ba976289a53dbf96b322b103c7afc21.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_QueryTempModSet-0ba976289a53dbf96b322b103c7afc21.png deleted file mode 100644 index df294550..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_QueryTempModSet-0ba976289a53dbf96b322b103c7afc21.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_QueryTempModSet-b0ede8242625cb572430cc348883f3c0.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_QueryTempModSet-b0ede8242625cb572430cc348883f3c0.png new file mode 100644 index 00000000..c53cb9a3 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_QueryTempModSet-b0ede8242625cb572430cc348883f3c0.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_RemoveFromTempModSet-51ca3fcbbd419cf6e470b1f3f159aa84.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_RemoveFromTempModSet-51ca3fcbbd419cf6e470b1f3f159aa84.png deleted file mode 100644 index 688c8dd8..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_RemoveFromTempModSet-51ca3fcbbd419cf6e470b1f3f159aa84.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_RemoveFromTempModSet-6a7cd2b22c7cb4bd05c036821655d49a.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_RemoveFromTempModSet-6a7cd2b22c7cb4bd05c036821655d49a.png new file mode 100644 index 00000000..a3c289e6 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_RemoveFromTempModSet-6a7cd2b22c7cb4bd05c036821655d49a.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_ReportContentAsync-dbaa9fa77a041509aecb7a3e17816909.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_ReportContentAsync-dbaa9fa77a041509aecb7a3e17816909.png deleted file mode 100644 index 5696e671..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_ReportContentAsync-dbaa9fa77a041509aecb7a3e17816909.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_ReportContentAsync-eb434d3157fb7884dc999828eb2d6a6e.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_ReportContentAsync-eb434d3157fb7884dc999828eb2d6a6e.png new file mode 100644 index 00000000..df199f0e Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_ReportContentAsync-eb434d3157fb7884dc999828eb2d6a6e.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_SubmitNewModAsync-8728a8ce4666e4a8d6477ae0f4a43b03.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_SubmitNewModAsync-8728a8ce4666e4a8d6477ae0f4a43b03.png deleted file mode 100644 index 34251e69..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_SubmitNewModAsync-8728a8ce4666e4a8d6477ae0f4a43b03.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_SubmitNewModAsync-95991a02d50891bf9f8e62f8aa9c4161.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_SubmitNewModAsync-95991a02d50891bf9f8e62f8aa9c4161.png new file mode 100644 index 00000000..62e6f599 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_SubmitNewModAsync-95991a02d50891bf9f8e62f8aa9c4161.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_SubscribeToModAsync-40e6cf4f6781ca88098119205d7d7a3f.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_SubscribeToModAsync-40e6cf4f6781ca88098119205d7d7a3f.png deleted file mode 100644 index 587b01f6..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_SubscribeToModAsync-40e6cf4f6781ca88098119205d7d7a3f.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_SubscribeToModAsync-93fd3340617ee4d44dea7078fb1199d4.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_SubscribeToModAsync-93fd3340617ee4d44dea7078fb1199d4.png new file mode 100644 index 00000000..389e6852 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_SubscribeToModAsync-93fd3340617ee4d44dea7078fb1199d4.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_UnmuteUserAsync-3d5fb9c4326a9e0083404c7122e2a1c8.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_UnmuteUserAsync-3d5fb9c4326a9e0083404c7122e2a1c8.png new file mode 100644 index 00000000..d4c73efe Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_UnmuteUserAsync-3d5fb9c4326a9e0083404c7122e2a1c8.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_UnmuteUserAsync-5072928585d25488a648dfc7210fb4e0.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_UnmuteUserAsync-5072928585d25488a648dfc7210fb4e0.png deleted file mode 100644 index 1175a92d..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_UnmuteUserAsync-5072928585d25488a648dfc7210fb4e0.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync-c749be66fec80d0e8bfe214ade7abbcf.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync-c749be66fec80d0e8bfe214ade7abbcf.png deleted file mode 100644 index 2c07b9ba..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync-c749be66fec80d0e8bfe214ade7abbcf.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync-ffcaaed44b92c819c915849b1931814a.png b/Doc/assets/images/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync-ffcaaed44b92c819c915849b1931814a.png new file mode 100644 index 00000000..59f5c69b Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync-ffcaaed44b92c819c915849b1931814a.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_PrioritizeTransferForMod-1eb6142c4dd34c75b675bb6246a0d6d8.png b/Doc/assets/images/nd_img_ModioSubsystem_PrioritizeTransferForMod-1eb6142c4dd34c75b675bb6246a0d6d8.png new file mode 100644 index 00000000..850ec592 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_PrioritizeTransferForMod-1eb6142c4dd34c75b675bb6246a0d6d8.png differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_PrioritizeTransferForMod-597a4fd0e4c6a56d4264f3a2df028b25.png b/Doc/assets/images/nd_img_ModioSubsystem_PrioritizeTransferForMod-597a4fd0e4c6a56d4264f3a2df028b25.png deleted file mode 100644 index 71ac0375..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_PrioritizeTransferForMod-597a4fd0e4c6a56d4264f3a2df028b25.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_QueryUserInstallations-42ae147ec3c47d4b1f17ba58476bf09e.png b/Doc/assets/images/nd_img_ModioSubsystem_QueryUserInstallations-42ae147ec3c47d4b1f17ba58476bf09e.png deleted file mode 100644 index f2b7df79..00000000 Binary files a/Doc/assets/images/nd_img_ModioSubsystem_QueryUserInstallations-42ae147ec3c47d4b1f17ba58476bf09e.png and /dev/null differ diff --git a/Doc/assets/images/nd_img_ModioSubsystem_QueryUserInstallations-ad0e0b0aa88244144d9da4210ee3d5d1.png b/Doc/assets/images/nd_img_ModioSubsystem_QueryUserInstallations-ad0e0b0aa88244144d9da4210ee3d5d1.png new file mode 100644 index 00000000..c83e96c2 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioSubsystem_QueryUserInstallations-ad0e0b0aa88244144d9da4210ee3d5d1.png differ diff --git a/Doc/assets/images/nd_img_ModioUnsigned64Library_MakeFromComponents-5bd42089022b89256170fe2c464b932d.png b/Doc/assets/images/nd_img_ModioUnsigned64Library_MakeFromComponents-5bd42089022b89256170fe2c464b932d.png new file mode 100644 index 00000000..fef40741 Binary files /dev/null and b/Doc/assets/images/nd_img_ModioUnsigned64Library_MakeFromComponents-5bd42089022b89256170fe2c464b932d.png differ diff --git a/Doc/assets/images/nd_img_ModioUnsigned64Library_Percentage_Unsigned64-f7f1acacb3174469af6f03459bea230a.png b/Doc/assets/images/nd_img_ModioUnsigned64Library_Percentage_Unsigned64-f7f1acacb3174469af6f03459bea230a.png deleted file mode 100644 index 0a971ab9..00000000 Binary files a/Doc/assets/images/nd_img_ModioUnsigned64Library_Percentage_Unsigned64-f7f1acacb3174469af6f03459bea230a.png and /dev/null differ diff --git a/Doc/assets/js/0c9c4b9e.33716226.js b/Doc/assets/js/0c9c4b9e.33716226.js deleted file mode 100644 index cc504fdd..00000000 --- a/Doc/assets/js/0c9c4b9e.33716226.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[4944],{50494:(e,i,d)=>{d.r(i),d.d(i,{assets:()=>l,contentTitle:()=>n,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var t=d(74848),s=d(28453);const o={id:"ue-mod-creation-tool",title:"Mod Creation Tool",slug:"/unreal/mod-creation-tool/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/mod-creation-tool-documentation.mdx"},n=void 0,r={id:"ue-mod-creation-tool",title:"Mod Creation Tool",description:"Mod Creation & Upload Tool",source:"@site/public/en-us/mod-creation-tool-documentation.mdx",sourceDirName:".",slug:"/unreal/mod-creation-tool/",permalink:"/unreal/mod-creation-tool/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/mod-creation-tool-documentation.mdx",tags:[],version:"current",frontMatter:{id:"ue-mod-creation-tool",title:"Mod Creation Tool",slug:"/unreal/mod-creation-tool/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/mod-creation-tool-documentation.mdx"},sidebar:"sidebar",previous:{title:"Profiling",permalink:"/unreal/profiling/"},next:{title:"Android Configuration",permalink:"/unreal/android-configuration/"}},l={},c=[{value:"Mod Creation & Upload Tool",id:"mod-creation--upload-tool",level:2},{value:"Editor-specific plugin modules",id:"editor-specific-plugin-modules",level:3},{value:"Opening the tool",id:"opening-the-tool",level:3},{value:"Authenticating",id:"authenticating",level:3},{value:"Verification Code",id:"verification-code",level:4},{value:"Create or Edit Mods",id:"create-or-edit-mods",level:3},{value:"Create Mod",id:"create-mod",level:4},{value:"Edit Mods",id:"edit-mods",level:4},{value:"Create a Mod",id:"create-a-mod",level:3},{value:"Create Mod",id:"create-mod-1",level:4},{value:"Edit existing mods",id:"edit-existing-mods",level:3},{value:"Edit Mods",id:"edit-mods-1",level:4},{value:"Uploading a new modfile",id:"uploading-a-new-modfile",level:3},{value:"Mod file upload",id:"mod-file-upload",level:3}];function a(e){const i={h2:"h2",h3:"h3",h4:"h4",img:"img",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.h2,{id:"mod-creation--upload-tool",children:"Mod Creation & Upload Tool"}),"\n",(0,t.jsx)(i.p,{children:"The mod.io Unreal Engine's plugin includes an editor module which provides an embedded mod.io - Content Creation and Upload Tool."}),"\n",(0,t.jsx)(i.h3,{id:"editor-specific-plugin-modules",children:"Editor-specific plugin modules"}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Module Name"}),(0,t.jsx)(i.th,{children:"Description"}),(0,t.jsx)(i.th,{children:"Module Type"})]})}),(0,t.jsx)(i.tbody,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"ModioEditor"}),(0,t.jsx)(i.td,{children:"Editor details customization and asset factories for UE content creation and upload tool classes"}),(0,t.jsx)(i.td,{children:"Editor"})]})})]}),"\n",(0,t.jsx)(i.h3,{id:"opening-the-tool",children:"Opening the tool"}),"\n",(0,t.jsxs)(i.p,{children:["Click the mod.io icon in Unreal Engine to show a drop down menu, click the ",(0,t.jsx)(i.strong,{children:"Create & Upload"})," menu. Once opened, it may require mod.io authentication as below."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"how_to_open_tool",src:d(92394).A+"",width:"1280",height:"212"})}),"\n",(0,t.jsx)(i.h3,{id:"authenticating",children:"Authenticating"}),"\n",(0,t.jsx)(i.p,{children:"Authentication may be required either being a first time user of the module or not logged in previously. If you are already logged in, you will automatically be redirected to creating or editing mods."}),"\n",(0,t.jsx)(i.p,{children:"The user will be authenticated if not already logged in to mod.io account."}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Email:"}),"\nEnter your email in the text box shown below and click Login, a verification code will be sent to the submitted email address."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"auth_enter_email",src:d(11200).A+"",width:"1360",height:"967"})}),"\n",(0,t.jsx)(i.h4,{id:"verification-code",children:"Verification Code"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Verification Code:"})," Enter the code received in your email and click Authenticate."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"auth_enter_code",src:d(34353).A+"",width:"1362",height:"961"})}),"\n",(0,t.jsx)(i.p,{children:"If everything goes correctly, you will be authenticated successfully."}),"\n",(0,t.jsx)(i.h3,{id:"create-or-edit-mods",children:"Create or Edit Mods"}),"\n",(0,t.jsxs)(i.p,{children:["After successfull authentication, you can either ",(0,t.jsx)(i.strong,{children:"Create Mod"})," or ",(0,t.jsx)(i.strong,{children:"Edit Mods"}),"."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"create_or_upload_mod",src:d(99577).A+"",width:"1360",height:"961"})}),"\n",(0,t.jsx)(i.h4,{id:"create-mod",children:"Create Mod"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Create Mod"})," lets you create a new mod."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"create_mod",src:d(54441).A+"",width:"1360",height:"961"})}),"\n",(0,t.jsx)(i.h4,{id:"edit-mods",children:"Edit Mods"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Edit Mods"})," lets you edit existing mods and change any specific values or mod files on them."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"edit_mods",src:d(44158).A+"",width:"1360",height:"961"})}),"\n",(0,t.jsx)(i.h3,{id:"create-a-mod",children:"Create a Mod"}),"\n",(0,t.jsx)(i.p,{children:"Creating a mod is made easy directly from within Unreal Engine described in the\nprocess below."}),"\n",(0,t.jsx)(i.h4,{id:"create-mod-1",children:"Create Mod"}),"\n",(0,t.jsxs)(i.p,{children:["Click ",(0,t.jsx)(i.strong,{children:"Create Mod"})," and fill the following required fields:"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.strong,{children:"Create Mod Properties"})}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Fields"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Path to Logo File"}),(0,t.jsxs)(i.td,{children:["Browse to select your ",(0,t.jsx)(i.strong,{children:".png"})," file for logo"]})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Name"}),(0,t.jsx)(i.td,{children:"Name of the mod"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Summary"}),(0,t.jsx)(i.td,{children:"A brief summary of the mod"})]})]})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"create_mod_properties",src:d(17021).A+"",width:"1360",height:"963"})}),"\n",(0,t.jsxs)(i.p,{children:["Once filled all the required fields, click ",(0,t.jsx)(i.strong,{children:"Submit"})," to create the mod."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"create_mod_properties_submit",src:d(18266).A+"",width:"1360",height:"963"})}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"TIP"}),": You may get an error dialog if the game doesn't support your platform or the game is locked."]}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.img,{alt:"error_platform_not_supported",src:d(83061).A+"",width:"754",height:"244"}),"\n",(0,t.jsx)(i.img,{alt:"error_game_locked",src:d(53138).A+"",width:"652",height:"252"})]}),"\n",(0,t.jsx)(i.p,{children:"Once everything goes successful you will be asked if you also want to upload a mod file right away."}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"mod_created_modfile_prompt",src:d(63711).A+"",width:"433",height:"232"})}),"\n",(0,t.jsxs)(i.p,{children:["If ",(0,t.jsx)(i.strong,{children:"Yes"})," is selected you will be redirected to ",(0,t.jsx)(i.strong,{children:"STEP 6"}),"."]}),"\n",(0,t.jsx)(i.h3,{id:"edit-existing-mods",children:"Edit existing mods"}),"\n",(0,t.jsx)(i.p,{children:"Editing existing mods is made easy in the same way as creating a mod directly from within Unreal Engine described in the process below."}),"\n",(0,t.jsx)(i.h4,{id:"edit-mods-1",children:"Edit Mods"}),"\n",(0,t.jsxs)(i.p,{children:["By clicking ",(0,t.jsx)(i.strong,{children:"Edit Mods"}),", a list of mods will be shown to edit. You can select a mod by clicking on it."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.strong,{children:"Browse Mods"})}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Name"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsx)(i.tbody,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Your mod name"}),(0,t.jsx)(i.td,{children:"Your mod description"})]})})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"browse_mods",src:d(93948).A+"",width:"1359",height:"961"})}),"\n",(0,t.jsxs)(i.p,{children:["Once a mod is selected, click ",(0,t.jsx)(i.strong,{children:"Edit Mod"})," to edit the mod."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"browse_mods_edit_mods",src:d(31305).A+"",width:"1359",height:"961"})}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.strong,{children:"Edit Mod Properties"})}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Field"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Name"}),(0,t.jsx)(i.td,{children:"Your mod name"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Summary"}),(0,t.jsx)(i.td,{children:"Your mod summary"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Homepage URL"}),(0,t.jsx)(i.td,{children:"Your mod homepage url"})]})]})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"edit_mod_properties",src:d(43785).A+"",width:"1357",height:"961"})}),"\n",(0,t.jsxs)(i.p,{children:["If you want to change the mod properties, make desirable changes to above fields and click ",(0,t.jsx)(i.strong,{children:"Submit"}),"."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"edit_mod_properties_submit",src:d(52190).A+"",width:"1357",height:"961"})}),"\n",(0,t.jsxs)(i.p,{children:["Then click ",(0,t.jsx)(i.strong,{children:"Edit Files"})," to see list of existing mod files."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"edit_mod_properties_edit_files",src:d(68546).A+"",width:"1357",height:"961"})}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.strong,{children:"Modfile"})}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Name"}),(0,t.jsx)(i.th,{children:"Platform"}),(0,t.jsx)(i.th,{children:"Version"}),(0,t.jsx)(i.th,{children:"Status"})]})}),(0,t.jsx)(i.tbody,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Your mod file name"}),(0,t.jsx)(i.td,{children:"Your mod platform"}),(0,t.jsx)(i.td,{children:"Your mod file version"}),(0,t.jsx)(i.td,{children:"Your mod file status"})]})})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"browse_modfile",src:d(18393).A+"",width:"1360",height:"961"})}),"\n",(0,t.jsx)(i.h3,{id:"uploading-a-new-modfile",children:"Uploading a new modfile"}),"\n",(0,t.jsx)(i.p,{children:"To upload a mod file, a workspace directory path is mandatory which is described in the process below."}),"\n",(0,t.jsxs)(i.p,{children:["Click ",(0,t.jsx)(i.strong,{children:"New Modfile"})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"browse_modfile_new_modfile",src:d(56641).A+"",width:"1360",height:"961"})}),"\n",(0,t.jsxs)(i.p,{children:["You may need to select ",(0,t.jsx)(i.strong,{children:"Create mod for PC"})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"create_mod_for_pc",src:d(14233).A+"",width:"1354",height:"955"})}),"\n",(0,t.jsx)(i.p,{children:"Fill the required fields:"}),"\n",(0,t.jsx)(i.p,{children:"TIP: You may get an error dialog if the game doesn't support your platform or the game is locked."}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.strong,{children:"Upload Mod File"})}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Field"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Version"}),(0,t.jsx)(i.td,{children:"Your mod file version"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Changelog"}),(0,t.jsx)(i.td,{children:"Your mod file platform"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Set as Active Release"}),(0,t.jsx)(i.td,{children:"Whether to set as Active Release"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Path to Mod Root Directory"}),(0,t.jsx)(i.td,{children:"Path to the workspace directory"})]})]})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"upload_modfile",src:d(67936).A+"",width:"1351",height:"955"})}),"\n",(0,t.jsxs)(i.p,{children:["Once all fields are filled out, click ",(0,t.jsx)(i.strong,{children:"Submit"})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"upload_modfile_submit",src:d(58681).A+"",width:"1351",height:"955"})}),"\n",(0,t.jsx)(i.p,{children:"Once submitted, the progress bar will be displayed about the workspace directory being zipped and uploaded with all other information provided for the new mod file."}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"upload_modfile_submit_status",src:d(37520).A+"",width:"1357",height:"958"})}),"\n",(0,t.jsx)(i.h3,{id:"mod-file-upload",children:"Mod file upload"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"TIP"}),": You may get an error dialog if the game doesn't support your platform or the game is locked or any error that occurs due to internet or any other circumstances."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"modfile_successfully_uploaded",src:d(60003).A+"",width:"477",height:"238"})})]})}function h(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},34353:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/auth_enter_code-778c20c0c85b3b699f6b8d8701a2a095.jpg"},11200:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/auth_enter_email-de3079d992602c99281e0e899592e582.jpg"},18393:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/browse_modfile-9bc6ae054b047f63a8c9cfd3c9ac169b.jpg"},56641:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/browse_modfile_new_modfile-d2f495f1a091c98d062c27094ec526d9.jpg"},93948:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/browse_mods-ea8c350b3d963e62b0c05d1b28d0359f.jpg"},31305:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/browse_mods_edit_mods-017a3a3ba9955520dff199b962043182.jpg"},54441:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/create_mod-6d730263f0d163dee63907805aab7340.jpg"},14233:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/create_mod_for_pc-96ab4fb29fdb229f3e0a8cab75292971.jpg"},17021:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/create_mod_properties-622b730a8852b6d218da568ef95a6766.jpg"},18266:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/create_mod_properties_submit-78a0bcc5ddafb377774177ccecb8c544.jpg"},99577:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/create_or_upload_mod-ba6c9884ea92b45d8aa8fa183356727b.jpg"},43785:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/edit_mod_properties-6d5a61004bd10b50b4d0a1d2ee9b6a98.jpg"},68546:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/edit_mod_properties_edit_files-c6923cd5e3ee481be4fa0380146a4133.jpg"},52190:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/edit_mod_properties_submit-0ff0cacefbf3dba389c45c7add3d462f.jpg"},44158:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/edit_mods-046e4b1fe58ad5636b9a39a737a09a4f.jpg"},53138:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/error_game_locked-048ef273c39027b8bfc43cae4853ec47.jpg"},83061:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/error_platform_not_supported-cb2c479540dab3244baba6291a1495df.jpg"},92394:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/how_to_open_tool-ad0da9797d0eed19d37463af2ba06c45.jpg"},63711:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/mod_created_modfile_prompt-c1dd493d8fcca3b0274207ce6055d5fc.jpg"},60003:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/modfile_successfully_uploaded-abfddcd13899473da8ba107f8dfeeb40.jpg"},67936:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/upload_modfile-8a8ba2d5682ddc9c385970721c8baf21.jpg"},58681:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/upload_modfile_submit-fc996aea4fa01bc4d7836e391c58e3b4.jpg"},37520:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/upload_modfile_submit_status-fd8311ac91d9bc3bf72ecc7fee5bff01.jpg"},28453:(e,i,d)=>{d.d(i,{R:()=>n,x:()=>r});var t=d(96540);const s={},o=t.createContext(s);function n(e){const i=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:n(e.components),t.createElement(o.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/0c9c4b9e.48f78565.js b/Doc/assets/js/0c9c4b9e.48f78565.js new file mode 100644 index 00000000..186ecb74 --- /dev/null +++ b/Doc/assets/js/0c9c4b9e.48f78565.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[4944],{50494:(e,i,d)=>{d.r(i),d.d(i,{assets:()=>l,contentTitle:()=>n,default:()=>h,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var t=d(74848),o=d(28453);const s={id:"ue-mod-creation-tool",title:"Mod Creation Tool",slug:"/unreal/mod-creation-tool/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/mod-creation-tool-documentation.mdx"},n=void 0,r={id:"ue-mod-creation-tool",title:"Mod Creation Tool",description:"Mod Creation & Upload Tool",source:"@site/public/en-us/mod-creation-tool-documentation.mdx",sourceDirName:".",slug:"/unreal/mod-creation-tool/",permalink:"/unreal/mod-creation-tool/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/mod-creation-tool-documentation.mdx",tags:[],version:"current",frontMatter:{id:"ue-mod-creation-tool",title:"Mod Creation Tool",slug:"/unreal/mod-creation-tool/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/mod-creation-tool-documentation.mdx"},sidebar:"sidebar",previous:{title:"Profiling",permalink:"/unreal/profiling/"},next:{title:"Android Configuration",permalink:"/unreal/android-configuration/"}},l={},c=[{value:"Mod Creation & Upload Tool",id:"mod-creation--upload-tool",level:2},{value:"Editor-specific plugin modules",id:"editor-specific-plugin-modules",level:3},{value:"Opening the tool",id:"opening-the-tool",level:3},{value:"Authenticating",id:"authenticating",level:3},{value:"Verification Code",id:"verification-code",level:4},{value:"Create or Edit Mods",id:"create-or-edit-mods",level:3},{value:"Create Mod",id:"create-mod",level:4},{value:"Edit Mods",id:"edit-mods",level:4},{value:"Create a Mod",id:"create-a-mod",level:3},{value:"Create Mod",id:"create-mod-1",level:4},{value:"Edit existing mods",id:"edit-existing-mods",level:3},{value:"Edit Mods",id:"edit-mods-1",level:4},{value:"Uploading a new modfile",id:"uploading-a-new-modfile",level:3},{value:"Mod file upload",id:"mod-file-upload",level:3}];function a(e){const i={h2:"h2",h3:"h3",h4:"h4",img:"img",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.h2,{id:"mod-creation--upload-tool",children:"Mod Creation & Upload Tool"}),"\n",(0,t.jsx)(i.p,{children:"The mod.io Unreal Engine's plugin includes an editor module which provides an embedded mod.io - Content Creation and Upload Tool."}),"\n",(0,t.jsx)(i.h3,{id:"editor-specific-plugin-modules",children:"Editor-specific plugin modules"}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Module Name"}),(0,t.jsx)(i.th,{children:"Description"}),(0,t.jsx)(i.th,{children:"Module Type"})]})}),(0,t.jsx)(i.tbody,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"ModioEditor"}),(0,t.jsx)(i.td,{children:"Editor details customization and asset factories for UE content creation and upload tool classes"}),(0,t.jsx)(i.td,{children:"Editor"})]})})]}),"\n",(0,t.jsx)(i.h3,{id:"opening-the-tool",children:"Opening the tool"}),"\n",(0,t.jsxs)(i.p,{children:["Click the mod.io icon in Unreal Engine to show a drop down menu, click the ",(0,t.jsx)(i.strong,{children:"Create & Upload"})," menu. Once opened, it may require mod.io authentication as below."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"how_to_open_tool",src:d(94035).A+"",width:"1280",height:"212"})}),"\n",(0,t.jsx)(i.h3,{id:"authenticating",children:"Authenticating"}),"\n",(0,t.jsx)(i.p,{children:"Authentication may be required either being a first time user of the module or not logged in previously. If you are already logged in, you will automatically be redirected to creating or editing mods."}),"\n",(0,t.jsx)(i.p,{children:"The user will be authenticated if not already logged in to mod.io account."}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Email:"}),"\nEnter your email in the text box shown below and click Login, a verification code will be sent to the submitted email address."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"auth_enter_email",src:d(89777).A+"",width:"1360",height:"967"})}),"\n",(0,t.jsx)(i.h4,{id:"verification-code",children:"Verification Code"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Verification Code:"})," Enter the code received in your email and click Authenticate."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"auth_enter_code",src:d(39002).A+"",width:"1362",height:"961"})}),"\n",(0,t.jsx)(i.p,{children:"If everything goes correctly, you will be authenticated successfully."}),"\n",(0,t.jsx)(i.h3,{id:"create-or-edit-mods",children:"Create or Edit Mods"}),"\n",(0,t.jsxs)(i.p,{children:["After successfull authentication, you can either ",(0,t.jsx)(i.strong,{children:"Create Mod"})," or ",(0,t.jsx)(i.strong,{children:"Edit Mods"}),"."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"create_or_upload_mod",src:d(39508).A+"",width:"1360",height:"961"})}),"\n",(0,t.jsx)(i.h4,{id:"create-mod",children:"Create Mod"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Create Mod"})," lets you create a new mod."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"create_mod",src:d(10768).A+"",width:"1360",height:"961"})}),"\n",(0,t.jsx)(i.h4,{id:"edit-mods",children:"Edit Mods"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Edit Mods"})," lets you edit existing mods and change any specific values or mod files on them."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"edit_mods",src:d(56061).A+"",width:"1360",height:"961"})}),"\n",(0,t.jsx)(i.h3,{id:"create-a-mod",children:"Create a Mod"}),"\n",(0,t.jsx)(i.p,{children:"Creating a mod is made easy directly from within Unreal Engine described in the\nprocess below."}),"\n",(0,t.jsx)(i.h4,{id:"create-mod-1",children:"Create Mod"}),"\n",(0,t.jsxs)(i.p,{children:["Click ",(0,t.jsx)(i.strong,{children:"Create Mod"})," and fill the following required fields:"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.strong,{children:"Create Mod Properties"})}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Fields"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Path to Logo File"}),(0,t.jsxs)(i.td,{children:["Browse to select your ",(0,t.jsx)(i.strong,{children:".png"})," file for logo"]})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Name"}),(0,t.jsx)(i.td,{children:"Name of the mod"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Summary"}),(0,t.jsx)(i.td,{children:"A brief summary of the mod"})]})]})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"create_mod_properties",src:d(99142).A+"",width:"1360",height:"963"})}),"\n",(0,t.jsxs)(i.p,{children:["Once filled all the required fields, click ",(0,t.jsx)(i.strong,{children:"Submit"})," to create the mod."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"create_mod_properties_submit",src:d(21447).A+"",width:"1360",height:"963"})}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"TIP"}),": You may get an error dialog if the game doesn't support your platform or the game is locked."]}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.img,{alt:"error_platform_not_supported",src:d(16028).A+"",width:"754",height:"244"}),"\n",(0,t.jsx)(i.img,{alt:"error_game_locked",src:d(32977).A+"",width:"652",height:"252"})]}),"\n",(0,t.jsx)(i.p,{children:"Once everything goes successful you will be asked if you also want to upload a mod file right away."}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"mod_created_modfile_prompt",src:d(13006).A+"",width:"433",height:"232"})}),"\n",(0,t.jsxs)(i.p,{children:["If ",(0,t.jsx)(i.strong,{children:"Yes"})," is selected you will be redirected to ",(0,t.jsx)(i.strong,{children:"STEP 6"}),"."]}),"\n",(0,t.jsx)(i.h3,{id:"edit-existing-mods",children:"Edit existing mods"}),"\n",(0,t.jsx)(i.p,{children:"Editing existing mods is made easy in the same way as creating a mod directly from within Unreal Engine described in the process below."}),"\n",(0,t.jsx)(i.h4,{id:"edit-mods-1",children:"Edit Mods"}),"\n",(0,t.jsxs)(i.p,{children:["By clicking ",(0,t.jsx)(i.strong,{children:"Edit Mods"}),", a list of mods will be shown to edit. You can select a mod by clicking on it."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.strong,{children:"Browse Mods"})}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Name"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsx)(i.tbody,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Your mod name"}),(0,t.jsx)(i.td,{children:"Your mod description"})]})})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"browse_mods",src:d(74999).A+"",width:"1359",height:"961"})}),"\n",(0,t.jsxs)(i.p,{children:["Once a mod is selected, click ",(0,t.jsx)(i.strong,{children:"Edit Mod"})," to edit the mod."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"browse_mods_edit_mods",src:d(47086).A+"",width:"1359",height:"961"})}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.strong,{children:"Edit Mod Properties"})}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Field"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Name"}),(0,t.jsx)(i.td,{children:"Your mod name"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Summary"}),(0,t.jsx)(i.td,{children:"Your mod summary"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Homepage URL"}),(0,t.jsx)(i.td,{children:"Your mod homepage url"})]})]})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"edit_mod_properties",src:d(52990).A+"",width:"1357",height:"961"})}),"\n",(0,t.jsxs)(i.p,{children:["If you want to change the mod properties, make desirable changes to above fields and click ",(0,t.jsx)(i.strong,{children:"Submit"}),"."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"edit_mod_properties_submit",src:d(30687).A+"",width:"1357",height:"961"})}),"\n",(0,t.jsxs)(i.p,{children:["Then click ",(0,t.jsx)(i.strong,{children:"Edit Files"})," to see list of existing mod files."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"edit_mod_properties_edit_files",src:d(77515).A+"",width:"1357",height:"961"})}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.strong,{children:"Modfile"})}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Name"}),(0,t.jsx)(i.th,{children:"Platform"}),(0,t.jsx)(i.th,{children:"Version"}),(0,t.jsx)(i.th,{children:"Status"})]})}),(0,t.jsx)(i.tbody,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Your mod file name"}),(0,t.jsx)(i.td,{children:"Your mod platform"}),(0,t.jsx)(i.td,{children:"Your mod file version"}),(0,t.jsx)(i.td,{children:"Your mod file status"})]})})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"browse_modfile",src:d(58388).A+"",width:"1360",height:"961"})}),"\n",(0,t.jsx)(i.h3,{id:"uploading-a-new-modfile",children:"Uploading a new modfile"}),"\n",(0,t.jsx)(i.p,{children:"To upload a mod file, a workspace directory path is mandatory which is described in the process below."}),"\n",(0,t.jsxs)(i.p,{children:["Click ",(0,t.jsx)(i.strong,{children:"New Modfile"})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"browse_modfile_new_modfile",src:d(92060).A+"",width:"1360",height:"961"})}),"\n",(0,t.jsxs)(i.p,{children:["You may need to select ",(0,t.jsx)(i.strong,{children:"Create mod for PC"})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"create_mod_for_pc",src:d(22462).A+"",width:"1354",height:"955"})}),"\n",(0,t.jsx)(i.p,{children:"Fill the required fields:"}),"\n",(0,t.jsx)(i.p,{children:"TIP: You may get an error dialog if the game doesn't support your platform or the game is locked."}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.strong,{children:"Upload Mod File"})}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Field"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Version"}),(0,t.jsx)(i.td,{children:"Your mod file version"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Changelog"}),(0,t.jsx)(i.td,{children:"Your mod file platform"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Set as Active Release"}),(0,t.jsx)(i.td,{children:"Whether to set as Active Release"})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Path to Mod Root Directory"}),(0,t.jsx)(i.td,{children:"Path to the workspace directory"})]})]})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"upload_modfile",src:d(89609).A+"",width:"1351",height:"955"})}),"\n",(0,t.jsxs)(i.p,{children:["Once all fields are filled out, click ",(0,t.jsx)(i.strong,{children:"Submit"})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"upload_modfile_submit",src:d(66910).A+"",width:"1351",height:"955"})}),"\n",(0,t.jsx)(i.p,{children:"Once submitted, the progress bar will be displayed about the workspace directory being zipped and uploaded with all other information provided for the new mod file."}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"upload_modfile_submit_status",src:d(76473).A+"",width:"1357",height:"958"})}),"\n",(0,t.jsx)(i.h3,{id:"mod-file-upload",children:"Mod file upload"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"TIP"}),": You may get an error dialog if the game doesn't support your platform or the game is locked or any error that occurs due to internet or any other circumstances."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"modfile_successfully_uploaded",src:d(70040).A+"",width:"477",height:"238"})})]})}function h(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},39002:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/auth_enter_code-778c20c0c85b3b699f6b8d8701a2a095.jpg"},89777:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/auth_enter_email-de3079d992602c99281e0e899592e582.jpg"},58388:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/browse_modfile-9bc6ae054b047f63a8c9cfd3c9ac169b.jpg"},92060:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/browse_modfile_new_modfile-d2f495f1a091c98d062c27094ec526d9.jpg"},74999:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/browse_mods-ea8c350b3d963e62b0c05d1b28d0359f.jpg"},47086:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/browse_mods_edit_mods-017a3a3ba9955520dff199b962043182.jpg"},10768:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/create_mod-6d730263f0d163dee63907805aab7340.jpg"},22462:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/create_mod_for_pc-96ab4fb29fdb229f3e0a8cab75292971.jpg"},99142:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/create_mod_properties-622b730a8852b6d218da568ef95a6766.jpg"},21447:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/create_mod_properties_submit-78a0bcc5ddafb377774177ccecb8c544.jpg"},39508:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/create_or_upload_mod-ba6c9884ea92b45d8aa8fa183356727b.jpg"},52990:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/edit_mod_properties-6d5a61004bd10b50b4d0a1d2ee9b6a98.jpg"},77515:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/edit_mod_properties_edit_files-c6923cd5e3ee481be4fa0380146a4133.jpg"},30687:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/edit_mod_properties_submit-0ff0cacefbf3dba389c45c7add3d462f.jpg"},56061:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/edit_mods-046e4b1fe58ad5636b9a39a737a09a4f.jpg"},32977:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/error_game_locked-048ef273c39027b8bfc43cae4853ec47.jpg"},16028:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/error_platform_not_supported-cb2c479540dab3244baba6291a1495df.jpg"},94035:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/how_to_open_tool-ad0da9797d0eed19d37463af2ba06c45.jpg"},13006:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/mod_created_modfile_prompt-c1dd493d8fcca3b0274207ce6055d5fc.jpg"},70040:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/modfile_successfully_uploaded-abfddcd13899473da8ba107f8dfeeb40.jpg"},89609:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/upload_modfile-8a8ba2d5682ddc9c385970721c8baf21.jpg"},66910:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/upload_modfile_submit-fc996aea4fa01bc4d7836e391c58e3b4.jpg"},76473:(e,i,d)=>{d.d(i,{A:()=>t});const t=d.p+"assets/images/upload_modfile_submit_status-fd8311ac91d9bc3bf72ecc7fee5bff01.jpg"},28453:(e,i,d)=>{d.d(i,{R:()=>n,x:()=>r});var t=d(96540);const o={},s=t.createContext(o);function n(e){const i=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:n(e.components),t.createElement(s.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/1da2407e.5245f7dc.js b/Doc/assets/js/1da2407e.5245f7dc.js new file mode 100644 index 00000000..14d7c517 --- /dev/null +++ b/Doc/assets/js/1da2407e.5245f7dc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[2381],{84923:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var n=s(74848),i=s(28453),a=s(27064),r=s(89236);const o={id:"ue-metrics-play-sessions",title:"Metrics Play Sessions",slug:"/unreal/getting-started/metrics-play-sessions",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/metrics-play-sessions.mdx"},l=void 0,c={id:"getting-started/ue-metrics-play-sessions",title:"Metrics Play Sessions",description:"The mod.io Unreal Engine Plugin supports all of the mod.io metrics features, allowing you to start a metrics play sesion, keeping that session alive via a heartbeat (automatically called, or manually handled) and then ending that session. Metric sessions allow you to track which mods your players interact with most frequently. Visit https://docs.mod.io/metrics/ for an overview of the mod.io metrics system.",source:"@site/public/en-us/getting-started/metrics-play-sessions.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/metrics-play-sessions",permalink:"/unreal/getting-started/metrics-play-sessions",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/metrics-play-sessions.mdx",tags:[],version:"current",frontMatter:{id:"ue-metrics-play-sessions",title:"Metrics Play Sessions",slug:"/unreal/getting-started/metrics-play-sessions",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/metrics-play-sessions.mdx"},sidebar:"sidebar",previous:{title:"Muting and Unmuting a User",permalink:"/unreal/getting-started/mute-user"},next:{title:"Marketplace",permalink:"/unreal/marketplace/"}},d={},u=[{value:"Initialization",id:"initialization",level:4},{value:"Starting a Metrics Session",id:"starting-a-metrics-session",level:4},{value:"Metrics heartbeat",id:"metrics-heartbeat",level:4},{value:"Ending a Metrics Session",id:"ending-a-metrics-session",level:4}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h4:"h4",img:"img",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["The mod.io Unreal Engine Plugin supports all of the mod.io metrics features, allowing you to start a metrics play sesion, keeping that session alive via a heartbeat (automatically called, or manually handled) and then ending that session. Metric sessions allow you to track which mods your players interact with most frequently. Visit ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/metrics/",children:"https://docs.mod.io/metrics/"})," for an overview of the mod.io metrics system."]}),"\n",(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsxs)(t.p,{children:["Running metrics play sessions is a premium feature. If you are interested in mod.io premium features, please contact ",(0,n.jsx)(t.a,{href:"mailto:developers@mod.io",children:"developers@mod.io"}),"."]})}),"\n",(0,n.jsxs)(t.p,{children:["The Metrics session functionality is all accessible through the ",(0,n.jsx)(t.code,{children:"ModioSubsystem"})," class."]}),"\n",(0,n.jsx)(t.p,{children:"Metrics based on the platform and portal, are transparently taken care of with no additional consideration needed when using the SDK."}),"\n",(0,n.jsx)(t.h4,{id:"initialization",children:"Initialization"}),"\n",(0,n.jsxs)(t.p,{children:["The mod.io metrics features are enabled as part of generating a Metrics Secret Key your API settings in your game dashboard, e.g. ",(0,n.jsx)(t.a,{href:"https://mod.io/g/game-name/admin/api-key",children:"https://mod.io/g/game-name/admin/api-key"}),". Once this key has been generated, you need to pass it in as an ExtendedInitializationParameters entry in your InitializeOptions when Initializing the mod.io SDK, e.g.:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:'FModioInitializeOptions initializeOptions;\ninitializeOptions.ExtendedInitializationParameters.Add("MetricsSecretKey", "00000000-1111-2222-3333-444444444444");\n'})}),"\n",(0,n.jsx)(t.p,{children:"Failing to set up the Metrics Secret Key will result in a `SessionNotInitialized`` error being returned when using the metrics functionality."}),"\n",(0,n.jsx)(t.h4,{id:"starting-a-metrics-session",children:"Starting a Metrics Session"}),"\n",(0,n.jsxs)(t.p,{children:["You can call ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#metricssessionstartasync",children:"MetricsSessionStartAsync"})," to start a new session tracking the usage of mods in the context of your game. You'll notice that ",(0,n.jsx)(t.code,{children:"MetricsSessionStartAsync"})," takes a ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#modiometricssessionparams",children:"MetricsSessionParams"})," struct as its parameter. This contains an optional Session Id, as well as a required vector of mods to track."]}),"\n",(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsx)(t.p,{children:"If a Session Id is not provided, a random one will be created for you."})}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsxs)(r.A,{value:"blueprint",label:"Blueprint",children:[(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"metrics_session_start_1",src:s(82326).A+"",width:"769",height:"513"})}),(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsxs)(t.p,{children:["Use the ",(0,n.jsx)(t.code,{children:"SetSessionId"})," node if you want to associate your own Id with this session."]})}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"metrics_session_start_2",src:s(73005).A+"",width:"1025",height:"513"})})]}),(0,n.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"FModioMetricsSessionParams Params = FModioMetricsSessionParams(ModIds);\n\nvoid UModioManager::MetricsSessionStart(const FModioMetricsSessionParams& Params)\n{\n\tGEngine->GetEngineSubsystem()->MetricsSessionStartAsync(\n\t\tParams, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionStartCallback));\n}\n"})})})]}),"\n",(0,n.jsxs)(t.p,{children:["The Metrics Session Params accepts an optional Session Id in the form of a ",(0,n.jsx)(t.code,{children:"FModioGuid"})," which you may want to use to associate the new session with any supplementary telemetry you are gathering in your game."]}),"\n",(0,n.jsx)(t.h4,{id:"metrics-heartbeat",children:"Metrics heartbeat"}),"\n",(0,n.jsx)(t.p,{children:"To ensure that the session is kept alive, a heartbeat is required to be submitted at most every 5 minutes. We recommend doing this a bit earlier than the threshold to ensure you do not miss the window."}),"\n",(0,n.jsxs)(t.p,{children:["There are two methods provided to control the behaviour of the heart beat, ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#metricssessionsendheartbeatonceasync",children:"MetricsSessionSendHeartbeatOnceAsync"})," which you can call at your desired precision, as well as a single call and forget ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#metricssessionsendheartbeatatintervalasync",children:"MetricsSessionSendHeartbeatAtIntervalAsync"})," with a desired interval."]}),"\n",(0,n.jsxs)(t.p,{children:["Calling ",(0,n.jsx)(t.code,{children:"MetricsSessionSendHeartbeatOnceAsync"})," will submit a single heartbeat, and return an error code if something went wrong. If no error has occured, the heartbeat has been successfully sent."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"metrics_session_heartbeat",src:s(64202).A+"",width:"641",height:"385"})})}),(0,n.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"void UModioManager::MetricsSessionHeartbeat()\n{\n\tGEngine->GetEngineSubsystem()->MetricsSessionSendHeartbeatOnceAsync(\n\t\tFOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionHeartbeatCallback));\n}\n"})})})]}),"\n",(0,n.jsxs)(t.p,{children:["Calling ",(0,n.jsx)(t.code,{children:"MetricsSessionSendHeartbeatAtIntervalAsync"})," requires a parameter with the desired interval frequency in seconds. An error code will be returned if something went wrong, otherwise you will receive a false-y error if the interval loop has been shut down successfully (such as ending a session)."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"metrics_session_heartbeat_interval",src:s(25772).A+"",width:"641",height:"385"})})}),(0,n.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"const FModioUnsigned64 IntervalSeconds(150);\n\nvoid UModioManager::MetricsSessionHeartbeat(const FModioUnsigned64& IntervalSeconds)\n{\n\tGEngine->GetEngineSubsystem()->MetricsSessionSendHeartbeatAtIntervalAsync(\n\t\tIntervalSeconds, \n\t\tFOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionHeartbeatCallback));\n}\n"})})})]}),"\n",(0,n.jsx)(t.h4,{id:"ending-a-metrics-session",children:"Ending a Metrics Session"}),"\n",(0,n.jsxs)(t.p,{children:["To complete a session, for example when finishing a match, or quitting out of your game, you can call ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#metricssessionendasync",children:"MetricsSessionEndAsync"}),".\nAs with the other calls, you will receive an error if anything has gone wrong, otherwise the operation successfully completed."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"metrics_session_end",src:s(93089).A+"",width:"513",height:"385"})})}),(0,n.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"void UModioManager::MetricsSessionHeartbeat()\n{\n\tGEngine->GetEngineSubsystem()->MetricsSessionEndAsync(\n\t\tFOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionHeartbeatCallback));\n}\n"})})})]})]})}function m(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},19365:(e,t,s)=>{s.d(t,{A:()=>r});s(96540);var n=s(18215);const i={tabItem:"tabItem_Ymn6"};var a=s(74848);function r(e){let{children:t,hidden:s,className:r}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,n.A)(i.tabItem,r),hidden:s,children:t})}},11470:(e,t,s)=>{s.d(t,{A:()=>w});var n=s(96540),i=s(18215),a=s(23104),r=s(56347),o=s(205),l=s(57485),c=s(31682),d=s(70679);function u(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:s}=e;return(0,n.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:s,attributes:n,default:i}}=e;return{value:t,label:s,attributes:n,default:i}}))}(s);return function(e){const t=(0,c.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,s])}function m(e){let{value:t,tabValues:s}=e;return s.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:s}=e;const i=(0,r.W6)(),a=function(e){let{queryString:t=!1,groupId:s}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:t,groupId:s});return[(0,l.aZ)(a),(0,n.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(i.location.search);t.set(a,e),i.replace({...i.location,search:t.toString()})}),[a,i])]}function g(e){const{defaultValue:t,queryString:s=!1,groupId:i}=e,a=h(e),[r,l]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=s.find((e=>e.default))??s[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:a}))),[c,u]=p({queryString:s,groupId:i}),[g,b]=function(e){let{groupId:t}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(t),[i,a]=(0,d.Dv)(s);return[i,(0,n.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:i}),f=(()=>{const e=c??g;return m({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{f&&l(f)}),[f]);return{selectedValue:r,selectValue:(0,n.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,a]),tabValues:a}}var b=s(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(74848);function v(e){let{className:t,block:s,selectedValue:n,selectValue:r,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),d=e=>{const t=e.currentTarget,s=l.indexOf(t),i=o[s].value;i!==n&&(c(t),r(i))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;t=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;t=l[s]??l[l.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},t),children:o.map((e=>{let{value:t,label:s,attributes:a}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:n===t?0:-1,"aria-selected":n===t,ref:e=>l.push(e),onKeyDown:u,onClick:d,...a,className:(0,i.A)("tabs__item",f.tabItem,a?.className,{"tabs__item--active":n===t}),children:s??t},t)}))})}function x(e){let{lazy:t,children:s,selectedValue:i}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===i));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function j(e){const t=g(e);return(0,y.jsxs)("div",{className:(0,i.A)("tabs-container",f.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(x,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,y.jsx)(j,{...e,children:u(e.children)},String(t))}},89236:(e,t,s)=>{s.d(t,{A:()=>a});var n=s(19365),i=(s(96540),s(74848));function a(e){return(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(n.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,s)=>{s.d(t,{A:()=>a});var n=s(11470),i=(s(96540),s(74848));function a(e){return(0,i.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,i.jsx)(n.A,{...e})})}},93089:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/metrics_session_end-942fd0dad67f632b70e0d47a6b69ceda.png"},64202:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/metrics_session_heartbeat-6c6cae38cd1ecca90c1a7737010bdd34.png"},25772:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/metrics_session_heartbeat_interval-efbee004400f2d4006fd7d541abd445b.png"},82326:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/metrics_session_start_1-fd94f8b4fbb49ad0ba7fcf28ecf5e8f0.png"},73005:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/metrics_session_start_2-43157714ec2d0e21034cfd939a6f9879.png"},28453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>o});var n=s(96540);const i={},a=n.createContext(i);function r(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/1da2407e.9927ed81.js b/Doc/assets/js/1da2407e.9927ed81.js deleted file mode 100644 index 06108449..00000000 --- a/Doc/assets/js/1da2407e.9927ed81.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[2381],{84923:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var n=s(74848),i=s(28453),a=s(27064),r=s(89236);const o={id:"ue-metrics-play-sessions",title:"Metrics Play Sessions",slug:"/unreal/getting-started/metrics-play-sessions",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/metrics-play-sessions.mdx"},l=void 0,c={id:"getting-started/ue-metrics-play-sessions",title:"Metrics Play Sessions",description:"The mod.io Unreal Engine Plugin supports all of the mod.io metrics features, allowing you to start a metrics play sesion, keeping that session alive via a heartbeat (automatically called, or manually handled) and then ending that session. Metric sessions allow you to track which mods your players interact with most frequently. Visit https://docs.mod.io/metrics/ for an overview of the mod.io metrics system.",source:"@site/public/en-us/getting-started/metrics-play-sessions.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/metrics-play-sessions",permalink:"/unreal/getting-started/metrics-play-sessions",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/metrics-play-sessions.mdx",tags:[],version:"current",frontMatter:{id:"ue-metrics-play-sessions",title:"Metrics Play Sessions",slug:"/unreal/getting-started/metrics-play-sessions",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/metrics-play-sessions.mdx"},sidebar:"sidebar",previous:{title:"Muting and Unmuting a User",permalink:"/unreal/getting-started/mute-user"},next:{title:"Marketplace",permalink:"/unreal/marketplace/"}},d={},u=[{value:"Initialization",id:"initialization",level:4},{value:"Starting a Metrics Session",id:"starting-a-metrics-session",level:4},{value:"Metrics heartbeat",id:"metrics-heartbeat",level:4},{value:"Ending a Metrics Session",id:"ending-a-metrics-session",level:4}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h4:"h4",img:"img",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["The mod.io Unreal Engine Plugin supports all of the mod.io metrics features, allowing you to start a metrics play sesion, keeping that session alive via a heartbeat (automatically called, or manually handled) and then ending that session. Metric sessions allow you to track which mods your players interact with most frequently. Visit ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/metrics/",children:"https://docs.mod.io/metrics/"})," for an overview of the mod.io metrics system."]}),"\n",(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsxs)(t.p,{children:["Running metrics play sessions is a premium feature. If you are interested in mod.io premium features, please contact ",(0,n.jsx)(t.a,{href:"mailto:developers@mod.io",children:"developers@mod.io"}),"."]})}),"\n",(0,n.jsxs)(t.p,{children:["The Metrics session functionality is all accessible through the ",(0,n.jsx)(t.code,{children:"ModioSubsystem"})," class."]}),"\n",(0,n.jsx)(t.p,{children:"Metrics based on the platform and portal, are transparently taken care of with no additional consideration needed when using the SDK."}),"\n",(0,n.jsx)(t.h4,{id:"initialization",children:"Initialization"}),"\n",(0,n.jsxs)(t.p,{children:["The mod.io metrics features are enabled as part of generating a Metrics Secret Key your API settings in your game dashboard, e.g. ",(0,n.jsx)(t.a,{href:"https://mod.io/g/game-name/admin/api-key",children:"https://mod.io/g/game-name/admin/api-key"}),". Once this key has been generated, you need to pass it in as an ExtendedInitializationParameters entry in your InitializeOptions when Initializing the mod.io SDK, e.g.:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:'FModioInitializeOptions initializeOptions;\ninitializeOptions.ExtendedInitializationParameters.Add("MetricsSecretKey", "00000000-1111-2222-3333-444444444444");\n'})}),"\n",(0,n.jsx)(t.p,{children:"Failing to set up the Metrics Secret Key will result in a `SessionNotInitialized`` error being returned when using the metrics functionality."}),"\n",(0,n.jsx)(t.h4,{id:"starting-a-metrics-session",children:"Starting a Metrics Session"}),"\n",(0,n.jsxs)(t.p,{children:["You can call ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#MetricsSessionStartAsync",children:"MetricsSessionStartAsync"})," to start a new session tracking the usage of mods in the context of your game. You'll notice that ",(0,n.jsx)(t.code,{children:"MetricsSessionStartAsync"})," takes a ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#_metricssessionparams",children:"MetricsSessionParams"})," struct as its parameter. This contains an optional Session Id, as well as a required vector of mods to track."]}),"\n",(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsx)(t.p,{children:"If a Session Id is not provided, a random one will be created for you."})}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsxs)(r.A,{value:"blueprint",label:"Blueprint",children:[(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"metrics_session_start_1",src:s(68731).A+"",width:"769",height:"513"})}),(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsxs)(t.p,{children:["Use the ",(0,n.jsx)(t.code,{children:"SetSessionId"})," node if you want to associate your own Id with this session."]})}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"metrics_session_start_2",src:s(71168).A+"",width:"1025",height:"513"})})]}),(0,n.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"FModioMetricsSessionParams Params = FModioMetricsSessionParams(ModIds);\n\nvoid UModioManager::MetricsSessionStart(const FModioMetricsSessionParams& Params)\n{\n\tGEngine->GetEngineSubsystem()->MetricsSessionStartAsync(\n\t\tParams, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionStartCallback));\n}\n"})})})]}),"\n",(0,n.jsxs)(t.p,{children:["The Metrics Session Params accepts an optional Session Id in the form of a ",(0,n.jsx)(t.code,{children:"FModioGuid"})," which you may want to use to associate the new session with any supplementary telemetry you are gathering in your game."]}),"\n",(0,n.jsx)(t.h4,{id:"metrics-heartbeat",children:"Metrics heartbeat"}),"\n",(0,n.jsx)(t.p,{children:"To ensure that the session is kept alive, a heartbeat is required to be submitted at most every 5 minutes. We recommend doing this a bit earlier than the threshold to ensure you do not miss the window."}),"\n",(0,n.jsxs)(t.p,{children:["There are two methods provided to control the behaviour of the heart beat, ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#MetricsEessionSendHeartbeatOnceAsync",children:"MetricsSessionSendHeartbeatOnceAsync"})," which you can call at your desired precision, as well as a single call and forget ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#MetricsSessionSendHeartbeatAtIntervalAsync",children:"MetricsSessionSendHeartbeatAtIntervalAsync"})," with a desired interval."]}),"\n",(0,n.jsxs)(t.p,{children:["Calling ",(0,n.jsx)(t.code,{children:"MetricsSessionSendHeartbeatOnceAsync"})," will submit a single heartbeat, and return an error code if something went wrong. If no error has occured, the heartbeat has been successfully sent."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"metrics_session_heartbeat",src:s(21291).A+"",width:"641",height:"385"})})}),(0,n.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"void UModioManager::MetricsSessionHeartbeat()\n{\n\tGEngine->GetEngineSubsystem()->MetricsSessionSendHeartbeatOnceAsync(\n\t\tFOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionHeartbeatCallback));\n}\n"})})})]}),"\n",(0,n.jsxs)(t.p,{children:["Calling ",(0,n.jsx)(t.code,{children:"MetricsSessionSendHeartbeatAtIntervalAsync"})," requires a parameter with the desired interval frequency in seconds. An error code will be returned if something went wrong, otherwise you will receive a false-y error if the interval loop has been shut down successfully (such as ending a session)."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"metrics_session_heartbeat_interval",src:s(6643).A+"",width:"641",height:"385"})})}),(0,n.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"const FModioUnsigned64 IntervalSeconds(150);\n\nvoid UModioManager::MetricsSessionHeartbeat(const FModioUnsigned64& IntervalSeconds)\n{\n\tGEngine->GetEngineSubsystem()->MetricsSessionSendHeartbeatAtIntervalAsync(\n\t\tIntervalSeconds, \n\t\tFOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionHeartbeatCallback));\n}\n"})})})]}),"\n",(0,n.jsx)(t.h4,{id:"ending-a-metrics-session",children:"Ending a Metrics Session"}),"\n",(0,n.jsxs)(t.p,{children:["To complete a session, for example when finishing a match, or quitting out of your game, you can call ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#MetricsSessionEndAsync",children:"MetricsSessionEndAsync"}),".\nAs with the other calls, you will receive an error if anything has gone wrong, otherwise the operation successfully completed."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"metrics_session_end",src:s(46596).A+"",width:"513",height:"385"})})}),(0,n.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"void UModioManager::MetricsSessionHeartbeat()\n{\n\tGEngine->GetEngineSubsystem()->MetricsSessionEndAsync(\n\t\tFOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionHeartbeatCallback));\n}\n"})})})]})]})}function m(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},19365:(e,t,s)=>{s.d(t,{A:()=>r});s(96540);var n=s(18215);const i={tabItem:"tabItem_Ymn6"};var a=s(74848);function r(e){let{children:t,hidden:s,className:r}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,n.A)(i.tabItem,r),hidden:s,children:t})}},11470:(e,t,s)=>{s.d(t,{A:()=>S});var n=s(96540),i=s(18215),a=s(23104),r=s(56347),o=s(205),l=s(57485),c=s(31682),d=s(70679);function u(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:s}=e;return(0,n.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:s,attributes:n,default:i}}=e;return{value:t,label:s,attributes:n,default:i}}))}(s);return function(e){const t=(0,c.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,s])}function m(e){let{value:t,tabValues:s}=e;return s.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:s}=e;const i=(0,r.W6)(),a=function(e){let{queryString:t=!1,groupId:s}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:t,groupId:s});return[(0,l.aZ)(a),(0,n.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(i.location.search);t.set(a,e),i.replace({...i.location,search:t.toString()})}),[a,i])]}function g(e){const{defaultValue:t,queryString:s=!1,groupId:i}=e,a=h(e),[r,l]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=s.find((e=>e.default))??s[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:a}))),[c,u]=p({queryString:s,groupId:i}),[g,b]=function(e){let{groupId:t}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(t),[i,a]=(0,d.Dv)(s);return[i,(0,n.useCallback)((e=>{s&&a.set(e)}),[s,a])]}({groupId:i}),f=(()=>{const e=c??g;return m({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{f&&l(f)}),[f]);return{selectedValue:r,selectValue:(0,n.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,a]),tabValues:a}}var b=s(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(74848);function v(e){let{className:t,block:s,selectedValue:n,selectValue:r,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),d=e=>{const t=e.currentTarget,s=l.indexOf(t),i=o[s].value;i!==n&&(c(t),r(i))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;t=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;t=l[s]??l[l.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":s},t),children:o.map((e=>{let{value:t,label:s,attributes:a}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:n===t?0:-1,"aria-selected":n===t,ref:e=>l.push(e),onKeyDown:u,onClick:d,...a,className:(0,i.A)("tabs__item",f.tabItem,a?.className,{"tabs__item--active":n===t}),children:s??t},t)}))})}function x(e){let{lazy:t,children:s,selectedValue:i}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===i));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function j(e){const t=g(e);return(0,y.jsxs)("div",{className:(0,i.A)("tabs-container",f.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(x,{...t,...e})]})}function S(e){const t=(0,b.A)();return(0,y.jsx)(j,{...e,children:u(e.children)},String(t))}},89236:(e,t,s)=>{s.d(t,{A:()=>a});var n=s(19365),i=(s(96540),s(74848));function a(e){return(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(n.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,s)=>{s.d(t,{A:()=>a});var n=s(11470),i=(s(96540),s(74848));function a(e){return(0,i.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,i.jsx)(n.A,{...e})})}},46596:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/metrics_session_end-942fd0dad67f632b70e0d47a6b69ceda.png"},21291:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/metrics_session_heartbeat-6c6cae38cd1ecca90c1a7737010bdd34.png"},6643:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/metrics_session_heartbeat_interval-efbee004400f2d4006fd7d541abd445b.png"},68731:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/metrics_session_start_1-fd94f8b4fbb49ad0ba7fcf28ecf5e8f0.png"},71168:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/metrics_session_start_2-43157714ec2d0e21034cfd939a6f9879.png"},28453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>o});var n=s(96540);const i={},a=n.createContext(i);function r(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/2969dc70.3fd40665.js b/Doc/assets/js/2969dc70.3fd40665.js deleted file mode 100644 index 7503f400..00000000 --- a/Doc/assets/js/2969dc70.3fd40665.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[5237],{34348:(e,d,s)=>{s.r(d),s.d(d,{assets:()=>c,contentTitle:()=>t,default:()=>a,frontMatter:()=>n,metadata:()=>l,toc:()=>o});var i=s(74848),r=s(28453);const n={id:"ue-refdocs",title:"Unreal Plugin API Reference",slug:"/unreal/refdocs/"},t=void 0,l={id:"ue-refdocs",title:"Unreal Plugin API Reference",description:"Classes",source:"@site/public/en-us/generated-refdocs.mdx",sourceDirName:".",slug:"/unreal/refdocs/",permalink:"/unreal/refdocs/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-docs/tree/main/public/en-us/generated-refdocs.mdx",tags:[],version:"current",frontMatter:{id:"ue-refdocs",title:"Unreal Plugin API Reference",slug:"/unreal/refdocs/"},sidebar:"sidebar",previous:{title:"Android Configuration",permalink:"/unreal/android-configuration/"}},c={},o=[{value:"Classes",id:"classes",level:2},{value:"ModioCommonTypesLibrary",id:"modiocommontypeslibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy",level:5},{value:"ModioCreateModLibrary",id:"modiocreatemodlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-1",level:5},{value:"ModioErrorCodeLibrary",id:"modioerrorcodelibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-2",level:5},{value:"ModioErrorConditionLibrary",id:"modioerrorconditionlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-3",level:5},{value:"ModioExampleLibrary",id:"modioexamplelibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-4",level:5},{value:"ModioImageLibrary",id:"modioimagelibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-5",level:5},{value:"ModioModCollectionLibrary",id:"modiomodcollectionlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-6",level:5},{value:"ModioModProgressInfoLibrary",id:"modiomodprogressinfolibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-7",level:5},{value:"ModioModTagOptionsLibrary",id:"modiomodtagoptionslibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-8",level:5},{value:"ModioPlatformHelpersLibrary",id:"modioplatformhelperslibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-9",level:5},{value:"ModioPresetFilterParamsLibrary",id:"modiopresetfilterparamslibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-10",level:5},{value:"ModioSDKLibrary",id:"modiosdklibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-11",level:5},{value:"ModioSubmissionExtensionLibrary",id:"modiosubmissionextensionlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-12",level:5},{value:"SubmitModChangesAsync",id:"submitmodchangesasync",level:4},{value:"Requirements",id:"requirements",level:5},{value:"Parameters",id:"parameters",level:5},{value:"Error Values",id:"error-values",level:5},{value:"ModioSubsystem",id:"modiosubsystem",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-13",level:5},{value:"Set Log Level",id:"set-log-level",level:4},{value:"Parameters",id:"parameters-1",level:5},{value:"Run Pending Handlers",id:"run-pending-handlers",level:4},{value:"Parameters",id:"parameters-2",level:5},{value:"Query User Subscriptions",id:"query-user-subscriptions",level:4},{value:"Parameters",id:"parameters-3",level:5},{value:"Returns",id:"returns",level:5},{value:"Query User Purchased Mods",id:"query-user-purchased-mods",level:4},{value:"Requirements",id:"requirements-1",level:5},{value:"Parameters",id:"parameters-4",level:5},{value:"Returns",id:"returns-1",level:5},{value:"Query User Installations",id:"query-user-installations",level:4},{value:"Parameters",id:"parameters-5",level:5},{value:"Returns",id:"returns-2",level:5},{value:"Query System Installations",id:"query-system-installations",level:4},{value:"Parameters",id:"parameters-6",level:5},{value:"Returns",id:"returns-3",level:5},{value:"Prioritize Transfer for Mod",id:"prioritize-transfer-for-mod",level:4},{value:"Requirements",id:"requirements-2",level:5},{value:"Parameters",id:"parameters-7",level:5},{value:"Returns",id:"returns-4",level:5},{value:"Error Values",id:"error-values-1",level:5},{value:"Kill Background Thread",id:"kill-background-thread",level:4},{value:"VerifyUserAuthenticationAsync",id:"verifyuserauthenticationasync",level:4},{value:"Requirements",id:"requirements-3",level:5},{value:"Parameters",id:"parameters-8",level:5},{value:"Error Values",id:"error-values-2",level:5},{value:"UnsubscribeFromModAsync",id:"unsubscribefrommodasync",level:4},{value:"Requirements",id:"requirements-4",level:5},{value:"Parameters",id:"parameters-9",level:5},{value:"Error Values",id:"error-values-3",level:5},{value:"UnmuteUserAsync",id:"unmuteuserasync",level:4},{value:"Requirements",id:"requirements-5",level:5},{value:"Parameters",id:"parameters-10",level:5},{value:"Error Values",id:"error-values-4",level:5},{value:"SubscribeToModAsync",id:"subscribetomodasync",level:4},{value:"Requirements",id:"requirements-6",level:5},{value:"Parameters",id:"parameters-11",level:5},{value:"Error Values",id:"error-values-5",level:5},{value:"SubmitNewModFileForMod",id:"submitnewmodfileformod",level:4},{value:"Requirements",id:"requirements-7",level:5},{value:"Parameters",id:"parameters-12",level:5},{value:"Error Values",id:"error-values-6",level:5},{value:"SubmitNewModAsync",id:"submitnewmodasync",level:4},{value:"Requirements",id:"requirements-8",level:5},{value:"Parameters",id:"parameters-13",level:5},{value:"Error Values",id:"error-values-7",level:5},{value:"SubmitModRatingAsync",id:"submitmodratingasync",level:4},{value:"Requirements",id:"requirements-9",level:5},{value:"Parameters",id:"parameters-14",level:5},{value:"Error Values",id:"error-values-8",level:5},{value:"SubmitModChangesAsync",id:"submitmodchangesasync-1",level:4},{value:"Requirements",id:"requirements-10",level:5},{value:"Parameters",id:"parameters-15",level:5},{value:"Error Values",id:"error-values-9",level:5},{value:"ShutdownAsync",id:"shutdownasync",level:4},{value:"Parameters",id:"parameters-16",level:5},{value:"SetLanguage",id:"setlanguage",level:4},{value:"Parameters",id:"parameters-17",level:5},{value:"RequestEmailAuthCodeAsync",id:"requestemailauthcodeasync",level:4},{value:"Requirements",id:"requirements-11",level:5},{value:"Parameters",id:"parameters-18",level:5},{value:"Error Values",id:"error-values-10",level:5},{value:"ReportContentAsync",id:"reportcontentasync",level:4},{value:"Requirements",id:"requirements-12",level:5},{value:"Parameters",id:"parameters-19",level:5},{value:"Error Values",id:"error-values-11",level:5},{value:"RemoveFromTempModSet",id:"removefromtempmodset",level:4},{value:"Requirements",id:"requirements-13",level:5},{value:"Parameters",id:"parameters-20",level:5},{value:"Returns",id:"returns-5",level:5},{value:"Error Values",id:"error-values-12",level:5},{value:"RefreshUserEntitlementsAsync",id:"refreshuserentitlementsasync",level:4},{value:"Requirements",id:"requirements-14",level:5},{value:"Parameters",id:"parameters-21",level:5},{value:"QueryUserProfile",id:"queryuserprofile",level:4},{value:"Parameters",id:"parameters-22",level:5},{value:"Returns",id:"returns-6",level:5},{value:"QueryTempModSet",id:"querytempmodset",level:4},{value:"Parameters",id:"parameters-23",level:5},{value:"Returns",id:"returns-7",level:5},{value:"QueryCurrentModUpdate",id:"querycurrentmodupdate",level:4},{value:"Parameters",id:"parameters-24",level:5},{value:"Returns",id:"returns-8",level:5},{value:"PurchaseModAsync",id:"purchasemodasync",level:4},{value:"Requirements",id:"requirements-15",level:5},{value:"Parameters",id:"parameters-25",level:5},{value:"PreviewExternalUpdatesAsync",id:"previewexternalupdatesasync",level:4},{value:"Parameters",id:"parameters-26",level:5},{value:"MuteUserAsync",id:"muteuserasync",level:4},{value:"Requirements",id:"requirements-16",level:5},{value:"Parameters",id:"parameters-27",level:5},{value:"Error Values",id:"error-values-13",level:5},{value:"MetricsSessionStartAsync",id:"metricssessionstartasync",level:4},{value:"Parameters",id:"parameters-28",level:5},{value:"Error Values",id:"error-values-14",level:5},{value:"MetricsSessionSendHeartbeatOnceAsync",id:"metricssessionsendheartbeatonceasync",level:4},{value:"Parameters",id:"parameters-29",level:5},{value:"Error Values",id:"error-values-15",level:5},{value:"MetricsSessionSendHeartbeatAtIntervalAsync",id:"metricssessionsendheartbeatatintervalasync",level:4},{value:"Parameters",id:"parameters-30",level:5},{value:"Error Values",id:"error-values-16",level:5},{value:"MetricsSessionEndAsync",id:"metricssessionendasync",level:4},{value:"Parameters",id:"parameters-31",level:5},{value:"Error Values",id:"error-values-17",level:5},{value:"ListUserGamesAsync",id:"listusergamesasync",level:4},{value:"Requirements",id:"requirements-17",level:5},{value:"Parameters",id:"parameters-32",level:5},{value:"Error Values",id:"error-values-18",level:5},{value:"ListUserCreatedModsAsync",id:"listusercreatedmodsasync",level:4},{value:"Requirements",id:"requirements-18",level:5},{value:"Parameters",id:"parameters-33",level:5},{value:"Error Values",id:"error-values-19",level:5},{value:"ListAllModsAsync",id:"listallmodsasync",level:4},{value:"Requirements",id:"requirements-19",level:5},{value:"Parameters",id:"parameters-34",level:5},{value:"Error Values",id:"error-values-20",level:5},{value:"InitTempModSet",id:"inittempmodset",level:4},{value:"Requirements",id:"requirements-20",level:5},{value:"Parameters",id:"parameters-35",level:5},{value:"Returns",id:"returns-9",level:5},{value:"Error Values",id:"error-values-21",level:5},{value:"InitializeAsync",id:"initializeasync",level:4},{value:"Parameters",id:"parameters-36",level:5},{value:"Error Values",id:"error-values-22",level:5},{value:"GetUserWalletBalanceAsync",id:"getuserwalletbalanceasync",level:4},{value:"Requirements",id:"requirements-21",level:5},{value:"Parameters",id:"parameters-37",level:5},{value:"GetUserMediaAsync (Avatar)",id:"getusermediaasync-avatar",level:4},{value:"Requirements",id:"requirements-22",level:5},{value:"Parameters",id:"parameters-38",level:5},{value:"Error Values",id:"error-values-23",level:5},{value:"GetUserDelegationTokenAsync",id:"getuserdelegationtokenasync",level:4},{value:"Requirements",id:"requirements-23",level:5},{value:"Parameters",id:"parameters-39",level:5},{value:"GetTermsOfUseAsync",id:"gettermsofuseasync",level:4},{value:"Requirements",id:"requirements-24",level:5},{value:"Parameters",id:"parameters-40",level:5},{value:"Error Values",id:"error-values-24",level:5},{value:"GetMutedUsersAsync",id:"getmutedusersasync",level:4},{value:"Requirements",id:"requirements-25",level:5},{value:"Parameters",id:"parameters-41",level:5},{value:"Error Values",id:"error-values-25",level:5},{value:"GetModTagOptionsAsync",id:"getmodtagoptionsasync",level:4},{value:"Requirements",id:"requirements-26",level:5},{value:"Parameters",id:"parameters-42",level:5},{value:"Error Values",id:"error-values-26",level:5},{value:"GetModMediaAsync (Logo)",id:"getmodmediaasync-logo",level:4},{value:"Requirements",id:"requirements-27",level:5},{value:"Parameters",id:"parameters-43",level:5},{value:"Error Values",id:"error-values-27",level:5},{value:"GetModMediaAsync (Gallery Image)",id:"getmodmediaasync-gallery-image",level:4},{value:"Requirements",id:"requirements-28",level:5},{value:"Parameters",id:"parameters-44",level:5},{value:"Error Values",id:"error-values-28",level:5},{value:"GetModMediaAsync (Avatar)",id:"getmodmediaasync-avatar",level:4},{value:"Requirements",id:"requirements-29",level:5},{value:"Parameters",id:"parameters-45",level:5},{value:"Error Values",id:"error-values-29",level:5},{value:"GetModInfoAsync",id:"getmodinfoasync",level:4},{value:"Requirements",id:"requirements-30",level:5},{value:"Parameters",id:"parameters-46",level:5},{value:"Error Values",id:"error-values-30",level:5},{value:"GetModDependenciesAsync",id:"getmoddependenciesasync",level:4},{value:"Requirements",id:"requirements-31",level:5},{value:"Parameters",id:"parameters-47",level:5},{value:"Error Values",id:"error-values-31",level:5},{value:"GetModCreationHandle",id:"getmodcreationhandle",level:4},{value:"Parameters",id:"parameters-48",level:5},{value:"GetLanguage",id:"getlanguage",level:4},{value:"Parameters",id:"parameters-49",level:5},{value:"Returns",id:"returns-10",level:5},{value:"GetGameInfoAsync",id:"getgameinfoasync",level:4},{value:"Requirements",id:"requirements-32",level:5},{value:"Parameters",id:"parameters-50",level:5},{value:"Error Values",id:"error-values-32",level:5},{value:"ForceUninstallModAsync",id:"forceuninstallmodasync",level:4},{value:"Parameters",id:"parameters-51",level:5},{value:"Error Values",id:"error-values-33",level:5},{value:"FetchUserPurchasesAsync",id:"fetchuserpurchasesasync",level:4},{value:"Requirements",id:"requirements-33",level:5},{value:"Parameters",id:"parameters-52",level:5},{value:"FetchExternalUpdatesAsync",id:"fetchexternalupdatesasync",level:4},{value:"Parameters",id:"parameters-53",level:5},{value:"EnableModManagement",id:"enablemodmanagement",level:4},{value:"Parameters",id:"parameters-54",level:5},{value:"Returns",id:"returns-11",level:5},{value:"Error Values",id:"error-values-34",level:5},{value:"CloseTempModSet",id:"closetempmodset",level:4},{value:"Requirements",id:"requirements-34",level:5},{value:"Parameters",id:"parameters-55",level:5},{value:"Returns",id:"returns-12",level:5},{value:"Error Values",id:"error-values-35",level:5},{value:"ClearUserDataAsync",id:"clearuserdataasync",level:4},{value:"Requirements",id:"requirements-35",level:5},{value:"Parameters",id:"parameters-56",level:5},{value:"Error Values",id:"error-values-36",level:5},{value:"AuthenticateUserExternalAsync",id:"authenticateuserexternalasync",level:4},{value:"Requirements",id:"requirements-36",level:5},{value:"Parameters",id:"parameters-57",level:5},{value:"Error Values",id:"error-values-37",level:5},{value:"AuthenticateUserEmailAsync",id:"authenticateuseremailasync",level:4},{value:"Requirements",id:"requirements-37",level:5},{value:"Parameters",id:"parameters-58",level:5},{value:"Error Values",id:"error-values-38",level:5},{value:"ArchiveModAsync",id:"archivemodasync",level:4},{value:"Requirements",id:"requirements-38",level:5},{value:"Parameters",id:"parameters-59",level:5},{value:"Error Values",id:"error-values-39",level:5},{value:"AddToTempModSet",id:"addtotempmodset",level:4},{value:"Requirements",id:"requirements-39",level:5},{value:"Parameters",id:"parameters-60",level:5},{value:"Returns",id:"returns-13",level:5},{value:"Error Values",id:"error-values-40",level:5},{value:"Is Using Background Thread",id:"is-using-background-thread",level:4},{value:"Is Mod Management Busy",id:"is-mod-management-busy",level:4},{value:"Parameters",id:"parameters-61",level:5},{value:"Returns",id:"returns-14",level:5},{value:"Get Last Validation Error",id:"get-last-validation-error",level:4},{value:"Requirements",id:"requirements-40",level:5},{value:"Parameters",id:"parameters-62",level:5},{value:"Returns",id:"returns-15",level:5},{value:"Disable Mod Management",id:"disable-mod-management",level:4},{value:"Parameters",id:"parameters-63",level:5},{value:"ModioUIEnumLocalizationLibrary",id:"modiouienumlocalizationlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-14",level:5},{value:"ModioUILocalizationLibrary",id:"modiouilocalizationlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-15",level:5},{value:"ModioUnsigned64Library",id:"modiounsigned64library",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-16",level:5},{value:"Structs",id:"structs",level:2},{value:"ModioGameInfoList",id:"modiogameinfolist",level:3},{value:"ModioGameInfo",id:"modiogameinfo",level:3},{value:"Variables",id:"variables",level:5},{value:"ModioModTagInfo",id:"modiomodtaginfo",level:3},{value:"Variables",id:"variables-1",level:5},{value:"ModioLocalizedTagCategory",id:"modiolocalizedtagcategory",level:3},{value:"Variables",id:"variables-2",level:5},{value:"ModioModTagLocalizationData",id:"modiomodtaglocalizationdata",level:3},{value:"Variables",id:"variables-3",level:5},{value:"ModioGamePlatform",id:"modiogameplatform",level:3},{value:"Variables",id:"variables-4",level:5},{value:"ModioOtherUrl",id:"modiootherurl",level:3},{value:"Variables",id:"variables-5",level:5},{value:"ModioGameStats",id:"modiogamestats",level:3},{value:"Variables",id:"variables-6",level:5},{value:"ModioGameID",id:"modiogameid",level:3},{value:"ModioTheme",id:"modiotheme",level:3},{value:"Variables",id:"variables-7",level:5},{value:"ModioHeaderImage",id:"modioheaderimage",level:3},{value:"Variables",id:"variables-8",level:5},{value:"ModioLogo",id:"modiologo",level:3},{value:"Variables",id:"variables-9",level:5},{value:"ModioIcon",id:"modioicon",level:3},{value:"Variables",id:"variables-10",level:5},{value:"ModioPagedResult",id:"modiopagedresult",level:3},{value:"Variables",id:"variables-11",level:5},{value:"ModioModInfoList",id:"modiomodinfolist",level:3},{value:"ModioModInfo",id:"modiomodinfo",level:3},{value:"Variables",id:"variables-12",level:5},{value:"ModioUnsigned64",id:"modiounsigned64",level:3},{value:"ModioModStats",id:"modiomodstats",level:3},{value:"Variables",id:"variables-13",level:5},{value:"ModioSketchfabURLList",id:"modiosketchfaburllist",level:3},{value:"ModioYoutubeURLList",id:"modioyoutubeurllist",level:3},{value:"ModioModTag",id:"modiomodtag",level:3},{value:"Variables",id:"variables-14",level:5},{value:"ModioMetadata",id:"modiometadata",level:3},{value:"Variables",id:"variables-15",level:5},{value:"ModioFileMetadata",id:"modiofilemetadata",level:3},{value:"Variables",id:"variables-16",level:5},{value:"ModioModID",id:"modiomodid",level:3},{value:"ModioFileMetadataID",id:"modiofilemetadataid",level:3},{value:"ModioUser",id:"modiouser",level:3},{value:"Variables",id:"variables-17",level:5},{value:"ModioUserID",id:"modiouserid",level:3},{value:"ModioModTagOptions",id:"modiomodtagoptions",level:3},{value:"ModioErrorCode",id:"modioerrorcode",level:3},{value:"ModioOptionalGameInfo",id:"modiooptionalgameinfo",level:3},{value:"ModioOptionalImage",id:"modiooptionalimage",level:3},{value:"ModioOptionalModDependencyList",id:"modiooptionalmoddependencylist",level:3},{value:"ModioOptionalModInfo",id:"modiooptionalmodinfo",level:3},{value:"ModioOptionalModTagOptions",id:"modiooptionalmodtagoptions",level:3},{value:"ModioOptionalTerms",id:"modiooptionalterms",level:3},{value:"ModioOptionalUInt64",id:"modiooptionaluint64",level:3},{value:"ModioOptionalModInfoList",id:"modiooptionalmodinfolist",level:3},{value:"ModioOptionalGameInfoList",id:"modiooptionalgameinfolist",level:3},{value:"ModioModManagementEvent",id:"modiomodmanagementevent",level:3},{value:"Variables",id:"variables-18",level:5},{value:"ModioOptionalUserList",id:"modiooptionaluserlist",level:3},{value:"ModioOptionalModChangeMap",id:"modiooptionalmodchangemap",level:3},{value:"ModioOptionalTransactionRecord",id:"modiooptionaltransactionrecord",level:3},{value:"ModioOptionalEntitlementConsumptionStatusList",id:"modiooptionalentitlementconsumptionstatuslist",level:3},{value:"ModioOptionalModID",id:"modiooptionalmodid",level:3},{value:"ModioAuthenticationParams",id:"modioauthenticationparams",level:3},{value:"Variables",id:"variables-19",level:5},{value:"ModioApiKey",id:"modioapikey",level:3},{value:"ModioGuid",id:"modioguid",level:3},{value:"ModioOptionalGuid",id:"modiooptionalguid",level:3},{value:"ModioEmailAddress",id:"modioemailaddress",level:3},{value:"ModioEmailAuthCode",id:"modioemailauthcode",level:3},{value:"ModioEntitlementParams",id:"modioentitlementparams",level:3},{value:"ModioMetricsSessionParams",id:"modiometricssessionparams",level:3},{value:"ModioCreateModFileParams",id:"modiocreatemodfileparams",level:3},{value:"Variables",id:"variables-20",level:5},{value:"ModioCreateModParams",id:"modiocreatemodparams",level:3},{value:"Variables",id:"variables-21",level:5},{value:"ModioEditModParams",id:"modioeditmodparams",level:3},{value:"ModioEntitlementWalletBalance",id:"modioentitlementwalletbalance",level:3},{value:"Variables",id:"variables-22",level:5},{value:"ModioOptionalEntitlementWalletBalance",id:"modiooptionalentitlementwalletbalance",level:3},{value:"ModioEntitlementConsumptionVirtualCurrencyDetails",id:"modioentitlementconsumptionvirtualcurrencydetails",level:3},{value:"Variables",id:"variables-23",level:5},{value:"EntitlementConsumptionStatus",id:"entitlementconsumptionstatus",level:3},{value:"Variables",id:"variables-24",level:5},{value:"ModioEntitlementConsumptionStatusList",id:"modioentitlementconsumptionstatuslist",level:3},{value:"Variables",id:"variables-25",level:5},{value:"ModioFilterParams",id:"modiofilterparams",level:3},{value:"ModioPresetFilterParams",id:"modiopresetfilterparams",level:3},{value:"Variables",id:"variables-26",level:5},{value:"ModioImageWrapper",id:"modioimagewrapper",level:3},{value:"Variables",id:"variables-27",level:5},{value:"ModioInitializeOptions",id:"modioinitializeoptions",level:3},{value:"Variables",id:"variables-28",level:5},{value:"ModioModChangeMap",id:"modiomodchangemap",level:3},{value:"Variables",id:"variables-29",level:5},{value:"ModioModCollectionEntry",id:"modiomodcollectionentry",level:3},{value:"ModioModCreationHandle",id:"modiomodcreationhandle",level:3},{value:"ModioModDependency",id:"modiomoddependency",level:3},{value:"Variables",id:"variables-30",level:5},{value:"ModioModDependencyList",id:"modiomoddependencylist",level:3},{value:"Variables",id:"variables-31",level:5},{value:"ModioModProgressInfo",id:"modiomodprogressinfo",level:3},{value:"Variables",id:"variables-32",level:5},{value:"ModioOptionalModProgressInfo",id:"modiooptionalmodprogressinfo",level:3},{value:"ModioReportParams",id:"modioreportparams",level:3},{value:"ModioLink",id:"modiolink",level:3},{value:"Variables",id:"variables-33",level:5},{value:"ModioTerms",id:"modioterms",level:3},{value:"Variables",id:"variables-34",level:5},{value:"ModioTransactionRecord",id:"modiotransactionrecord",level:3},{value:"Variables",id:"variables-35",level:5},{value:"ModioOptionalUser",id:"modiooptionaluser",level:3},{value:"ModioUserList",id:"modiouserlist",level:3},{value:"Variables",id:"variables-36",level:5},{value:"ModioValidationError",id:"modiovalidationerror",level:3},{value:"Variables",id:"variables-37",level:5},{value:"ModioCreateModFileMemoryParams",id:"modiocreatemodfilememoryparams",level:3},{value:"Variables",id:"variables-38",level:5},{value:"Functions",id:"functions",level:2},{value:"Set Session Identifier",id:"set-session-identifier",level:3},{value:"Parameters",id:"parameters-64",level:4},{value:"Returns",id:"returns-16",level:4},{value:"Set Session Id",id:"set-session-id",level:3},{value:"Parameters",id:"parameters-65",level:4},{value:"Set Portal",id:"set-portal",level:3},{value:"Parameters",id:"parameters-66",level:4},{value:"Returns",id:"returns-17",level:4},{value:"Set Game Id",id:"set-game-id",level:3},{value:"Parameters",id:"parameters-67",level:4},{value:"Returns",id:"returns-18",level:4},{value:"Set Game Environment",id:"set-game-environment",level:3},{value:"Parameters",id:"parameters-68",level:4},{value:"Returns",id:"returns-19",level:4},{value:"Set Extended Initialization Parameters",id:"set-extended-initialization-parameters",level:3},{value:"Parameters",id:"parameters-69",level:4},{value:"Returns",id:"returns-20",level:4},{value:"Set API Key",id:"set-api-key",level:3},{value:"Parameters",id:"parameters-70",level:4},{value:"Returns",id:"returns-21",level:4},{value:"ModioModID != ModioModID",id:"modiomodid--modiomodid",level:3},{value:"Parameters",id:"parameters-71",level:4},{value:"Make Metrics Session Params",id:"make-metrics-session-params",level:3},{value:"Parameters",id:"parameters-72",level:4},{value:"Make Initialize Options",id:"make-initialize-options",level:3},{value:"Parameters",id:"parameters-73",level:4},{value:"Make Guid",id:"make-guid",level:3},{value:"Parameters",id:"parameters-74",level:4},{value:"Make Game Id",id:"make-game-id",level:3},{value:"Parameters",id:"parameters-75",level:4},{value:"Make Entitlement Params",id:"make-entitlement-params",level:3},{value:"Parameters",id:"parameters-76",level:4},{value:"Make Auth Params",id:"make-auth-params",level:3},{value:"Parameters",id:"parameters-77",level:4},{value:"Returns",id:"returns-22",level:4},{value:"Make Api Key",id:"make-api-key",level:3},{value:"Parameters",id:"parameters-78",level:4},{value:"Get Raw Value from Mod ID",id:"get-raw-value-from-mod-id",level:3},{value:"Parameters",id:"parameters-79",level:4},{value:"Returns",id:"returns-23",level:4},{value:"ModioModID == ModioModID",id:"modiomodid--modiomodid-1",level:3},{value:"Parameters",id:"parameters-80",level:4},{value:"Set Version String",id:"set-version-string",level:3},{value:"Set Tags",id:"set-tags",level:3},{value:"Set Modfile Platforms",id:"set-modfile-platforms",level:3},{value:"Set Mod File Metadata Blob",id:"set-mod-file-metadata-blob",level:3},{value:"Set Metadata Blob",id:"set-metadata-blob",level:3},{value:"Set Mark as Active Release",id:"set-mark-as-active-release",level:3},{value:"Set Initial Visibility DEPRECATED",id:"set-initial-visibility-deprecated",level:3},{value:"Set Initial Visibility",id:"set-initial-visibility",level:3},{value:"Set Homepage URL",id:"set-homepage-url",level:3},{value:"Set Description",id:"set-description",level:3},{value:"Set Changelog String",id:"set-changelog-string",level:3},{value:"Get Localized Text for Enum by Name",id:"get-localized-text-for-enum-by-name",level:3},{value:"Parameters",id:"parameters-81",level:4},{value:"Returns",id:"returns-24",level:4},{value:"FileSizeToText (Unsigned64)",id:"filesizetotext-unsigned64",level:3},{value:"Parameters",id:"parameters-82",level:4},{value:"Returns",id:"returns-25",level:4},{value:"Get Localized Text from Default Table by Key",id:"get-localized-text-from-default-table-by-key",level:3},{value:"Parameters",id:"parameters-83",level:4},{value:"Returns",id:"returns-26",level:4},{value:"Reconstruct Error",id:"reconstruct-error",level:3},{value:"Parameters",id:"parameters-84",level:4},{value:"IsError",id:"iserror",level:3},{value:"Parameters",id:"parameters-85",level:4},{value:"Returns",id:"returns-27",level:4},{value:"Get Value",id:"get-value",level:3},{value:"Parameters",id:"parameters-86",level:4},{value:"Returns",id:"returns-28",level:4},{value:"Get Message",id:"get-message",level:3},{value:"Parameters",id:"parameters-87",level:4},{value:"Returns",id:"returns-29",level:4},{value:"Error Code Matches",id:"error-code-matches",level:3},{value:"Parameters",id:"parameters-88",level:4},{value:"Returns",id:"returns-30",level:4},{value:"List User Subscription Async",id:"list-user-subscription-async",level:3},{value:"Parameters",id:"parameters-89",level:4},{value:"Get Logo Thumbnail Size",id:"get-logo-thumbnail-size",level:3},{value:"Get Logo Full Size",id:"get-logo-full-size",level:3},{value:"Get Avatar Thumbnail Size",id:"get-avatar-thumbnail-size",level:3},{value:"To Filter Params",id:"to-filter-params",level:3},{value:"Load Async",id:"load-async",level:3},{value:"Get Texture",id:"get-texture",level:3},{value:"Get State",id:"get-state",level:3},{value:"Get Logo Size",id:"get-logo-size",level:3},{value:"Parameters",id:"parameters-90",level:4},{value:"Returns",id:"returns-31",level:4},{value:"Get Gallery Size",id:"get-gallery-size",level:3},{value:"Parameters",id:"parameters-91",level:4},{value:"Returns",id:"returns-32",level:4},{value:"Get Avatar Size",id:"get-avatar-size",level:3},{value:"Parameters",id:"parameters-92",level:4},{value:"Returns",id:"returns-33",level:4},{value:"Get Path",id:"get-path",level:3},{value:"Parameters",id:"parameters-93",level:4},{value:"Returns",id:"returns-34",level:4},{value:"Get Mod State",id:"get-mod-state",level:3},{value:"Parameters",id:"parameters-94",level:4},{value:"Returns",id:"returns-35",level:4},{value:"Get Mod Profile",id:"get-mod-profile",level:3},{value:"Parameters",id:"parameters-95",level:4},{value:"Returns",id:"returns-36",level:4},{value:"Get ID",id:"get-id",level:3},{value:"Parameters",id:"parameters-96",level:4},{value:"Returns",id:"returns-37",level:4},{value:"Get Total Progress",id:"get-total-progress",level:3},{value:"Parameters",id:"parameters-97",level:4},{value:"Returns",id:"returns-38",level:4},{value:"Get Current State",id:"get-current-state",level:3},{value:"Parameters",id:"parameters-98",level:4},{value:"Get Current Progress",id:"get-current-progress",level:3},{value:"Parameters",id:"parameters-99",level:4},{value:"Returns",id:"returns-39",level:4},{value:"Get Tags",id:"get-tags",level:3},{value:"Parameters",id:"parameters-100",level:4},{value:"Returns",id:"returns-40",level:4},{value:"Get Paged Result",id:"get-paged-result",level:3},{value:"Parameters",id:"parameters-101",level:4},{value:"Returns",id:"returns-41",level:4},{value:"Get Default Portal for Current Platform",id:"get-default-portal-for-current-platform",level:3},{value:"Parameters",id:"parameters-102",level:4},{value:"Returns",id:"returns-42",level:4},{value:"Get Default Auth Provider for Current Platform",id:"get-default-auth-provider-for-current-platform",level:3},{value:"Parameters",id:"parameters-103",level:4},{value:"Returns",id:"returns-43",level:4},{value:"Get Current Platform",id:"get-current-platform",level:3},{value:"Parameters",id:"parameters-104",level:4},{value:"Returns",id:"returns-44",level:4},{value:"Round Number String",id:"round-number-string",level:3},{value:"Parameters",id:"parameters-105",level:4},{value:"Get Percent (integer64/integer64)",id:"get-percent-integer64integer64",level:3},{value:"Parameters",id:"parameters-106",level:4},{value:"Returns",id:"returns-45",level:4},{value:"Is Valid Security Code Format",id:"is-valid-security-code-format",level:3},{value:"Parameters",id:"parameters-107",level:4},{value:"Returns",id:"returns-46",level:4},{value:"Is Valid Email Address Format",id:"is-valid-email-address-format",level:3},{value:"Parameters",id:"parameters-108",level:4},{value:"Returns",id:"returns-47",level:4},{value:"Get Time Span as String",id:"get-time-span-as-string",level:3},{value:"Parameters",id:"parameters-109",level:4},{value:"Get Shortened Number as String",id:"get-shortened-number-as-string",level:3},{value:"Parameters",id:"parameters-110",level:4},{value:"Get Project Initialize Options for Session Id",id:"get-project-initialize-options-for-session-id",level:3},{value:"Parameters",id:"parameters-111",level:4},{value:"Get Project Game Id",id:"get-project-game-id",level:3},{value:"Parameters",id:"parameters-112",level:4},{value:"Get Project Environment",id:"get-project-environment",level:3},{value:"Parameters",id:"parameters-113",level:4},{value:"Get Project Api Key",id:"get-project-api-key",level:3},{value:"Parameters",id:"parameters-114",level:4},{value:"Get Language Code String",id:"get-language-code-string",level:3},{value:"Parameters",id:"parameters-115",level:4},{value:"Returns",id:"returns-48",level:4},{value:"Get Language Code from String",id:"get-language-code-from-string",level:3},{value:"Parameters",id:"parameters-116",level:4},{value:"Returns",id:"returns-49",level:4},{value:"Get Desired File Size Unit",id:"get-desired-file-size-unit",level:3},{value:"Parameters",id:"parameters-117",level:4},{value:"Returns",id:"returns-50",level:4},{value:"Get Default Session Id Windows",id:"get-default-session-id-windows",level:3},{value:"Parameters",id:"parameters-118",level:4},{value:"Returns",id:"returns-51",level:4},{value:"ToString (Filesize)",id:"tostring-filesize",level:3},{value:"Parameters",id:"parameters-119",level:4},{value:"Returns",id:"returns-52",level:4},{value:"GetDefaultModInstallationDirectory",id:"getdefaultmodinstallationdirectory",level:3},{value:"Parameters",id:"parameters-120",level:4},{value:"Returns",id:"returns-53",level:4},{value:"ModioUnsigned64 - ModioUnsigned64",id:"modiounsigned64---modiounsigned64",level:3},{value:"Percentage Unsigned 64",id:"percentage-unsigned-64",level:3},{value:"ModioUnsigned64 != ModioUnsigned64",id:"modiounsigned64--modiounsigned64",level:3},{value:"Make from Components",id:"make-from-components",level:3},{value:"ModioUnsigned64 < ModioUnsigned64",id:"modiounsigned64--modiounsigned64-1",level:3},{value:"ModioUnsigned64 > 0",id:"modiounsigned64--0",level:3},{value:"ModioUnsigned64 > ModioUnsigned64",id:"modiounsigned64--modiounsigned64-2",level:3},{value:"ModioUnsigned64 == ModioUnsigned64",id:"modiounsigned64--modiounsigned64-3",level:3},{value:"ModioUnsigned64 / ModioUnsigned64",id:"modiounsigned64--modiounsigned64-4",level:3},{value:"ModioUnsigned64 / float",id:"modiounsigned64--float",level:3},{value:"ModioUnsigned64 / ModioUnsigned64 (truncate)",id:"modiounsigned64--modiounsigned64-truncate",level:3},{value:"Break to Components",id:"break-to-components",level:3},{value:"ModioUnsigned64 + ModioUnsigned64",id:"modiounsigned64--modiounsigned64-5",level:3},{value:"SubmitNewModFromMemoryAsync",id:"submitnewmodfrommemoryasync",level:3},{value:"Parameters",id:"parameters-121",level:4},{value:"SubmitNewModFileForModFromMemory",id:"submitnewmodfileformodfrommemory",level:3},{value:"Requirements",id:"requirements-41",level:4},{value:"Parameters",id:"parameters-122",level:4},{value:"LoadModFileToMemory",id:"loadmodfiletomemory",level:3},{value:"Requirements",id:"requirements-42",level:4},{value:"Parameters",id:"parameters-123",level:4},{value:"Enums",id:"enums",level:2},{value:"EModioModfilePlatform",id:"EModioModfilePlatform",level:3},{value:"EGameMaturityFlags",id:"EGameMaturityFlags",level:3},{value:"EGameMonetizationFlags",id:"EGameMonetizationFlags",level:3},{value:"EModioModServerSideStatus",id:"EModioModServerSideStatus",level:3},{value:"EModioVirusStatus",id:"EModioVirusStatus",level:3},{value:"EModioVirusScanStatus",id:"EModioVirusScanStatus",level:3},{value:"EModioObjectVisibilityFlags",id:"EModioObjectVisibilityFlags",level:3},{value:"EModioMaturityFlags",id:"EModioMaturityFlags",level:3},{value:"EModioModManagementEventType",id:"EModioModManagementEventType",level:3},{value:"EModioAuthenticationProvider",id:"EModioAuthenticationProvider",level:3},{value:"EModioEnvironment",id:"EModioEnvironment",level:3},{value:"EModioPortal",id:"EModioPortal",level:3},{value:"EModioPlatformName",id:"EModioPlatformName",level:3},{value:"EModioLogoSize",id:"EModioLogoSize",level:3},{value:"EModioAvatarSize",id:"EModioAvatarSize",level:3},{value:"EModioGallerySize",id:"EModioGallerySize",level:3},{value:"EModioLogLevel",id:"EModioLogLevel",level:3},{value:"EModioLanguage",id:"EModioLanguage",level:3},{value:"EModioModChangeType",id:"EModioModChangeType",level:3},{value:"EFileSizeUnit",id:"EFileSizeUnit",level:3},{value:"EModioEntitlementConsumptionState",id:"EModioEntitlementConsumptionState",level:3},{value:"EModioEntitlementType",id:"EModioEntitlementType",level:3},{value:"EModioErrorCondition",id:"EModioErrorCondition",level:3},{value:"EModioSortFieldType",id:"EModioSortFieldType",level:3},{value:"EModioSortDirection",id:"EModioSortDirection",level:3},{value:"EModioRevenueFilterType",id:"EModioRevenueFilterType",level:3},{value:"EModioImageState",id:"EModioImageState",level:3},{value:"EModioModState",id:"EModioModState",level:3},{value:"EModioModProgressState",id:"EModioModProgressState",level:3},{value:"EModioRating",id:"EModioRating",level:3},{value:"EModioReportType",id:"EModioReportType",level:3}];function h(e){const d={a:"a",admonition:"admonition",code:"code",del:"del",em:"em",h2:"h2",h3:"h3",h4:"h4",h5:"h5",hr:"hr",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components},{RefTable:n}=d;return n||function(e,d){throw new Error("Expected "+(d?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("RefTable",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(d.h2,{id:"classes",children:"Classes"}),"\n",(0,i.jsx)(d.h3,{id:"modiocommontypeslibrary",children:"ModioCommonTypesLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiocreatemodlibrary",children:"ModioCreateModLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-1",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioerrorcodelibrary",children:"ModioErrorCodeLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-2",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioerrorconditionlibrary",children:"ModioErrorConditionLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-3",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioexamplelibrary",children:"ModioExampleLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-4",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioimagelibrary",children:"ModioImageLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-5",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodcollectionlibrary",children:"ModioModCollectionLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-6",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodprogressinfolibrary",children:"ModioModProgressInfoLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-7",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodtagoptionslibrary",children:"ModioModTagOptionsLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-8",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioplatformhelperslibrary",children:"ModioPlatformHelpersLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-9",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiopresetfilterparamslibrary",children:"ModioPresetFilterParamsLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-10",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiosdklibrary",children:"ModioSDKLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-11",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiosubmissionextensionlibrary",children:"ModioSubmissionExtensionLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-12",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.h4,{id:"submitmodchangesasync",children:"SubmitModChangesAsync"}),"\n",(0,i.jsx)(d.p,{children:"Edits the parameters of a mod, by updating any fields set in the Params object to match the passed-in values. Fields left empty on the Params object will not be updated. This method also accepts a Png binary file for uploading a new logo."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubmissionExtensionLibrary_K2_SubmitModChangesFromMemoryAsync.png",src:s(98688).A+"",width:"328",height:"244"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitModChangesFromMemoryAsync(FModioModID Mod, FModioEditModParams Params, TArray PngData, FOnGetModInfoDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubmissionExtensionLibrary"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Mod"})}),(0,i.jsx)(d.td,{children:"The ID of the mod you wish to edit"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Params"})}),(0,i.jsx)(d.td,{children:"Descriptor containing the fields that should be altered."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PngData"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"The callback invoked when the changes have been submitted, containing an optional updated ModInfo object if the edits were performed successfully"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:"GenericError::SDKNotInitialized"}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:"UserDataError::InvalidUser"}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:"NetworkError"}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:"InvalidArgsError"}),(0,i.jsx)(d.td,{children:"Some fields in Params did not pass validation"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiosubsystem",children:"ModioSubsystem"}),"\n",(0,i.jsxs)(d.p,{children:[(0,i.jsx)(d.code,{children:"ModioSubsystem"})," is a thin wrapper around the mod.io SDK, wrapping all the functions available in the SDK's public header ",(0,i.jsx)(d.code,{children:"modio/ModioSDK.h"}),". This subsystem also converts mod.io SDK types to unreal-friendly types and caches some expensive operations."]}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-13",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> EngineSubsystem-> DynamicSubsystem-> Subsystem-> Object"}),"\n",(0,i.jsx)(d.h4,{id:"set-log-level",children:"Set Log Level"}),"\n",(0,i.jsx)(d.p,{children:"Sets the global logging level."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_SetLogLevel.png",src:s(23059).A+"",width:"306",height:"182"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetLogLevel(EModioLogLevel UnrealLogLevel)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-1",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UnrealLogLevel"})}),(0,i.jsx)(d.td,{children:"Determines which messages to include in the log output. Messages with a log level below the specified value will not be displayed."})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"run-pending-handlers",children:"Run Pending Handlers"}),"\n",(0,i.jsx)(d.p,{children:"Runs any pending mod.io work on the calling thread and invokes any callbacks passed to asynchronous operations."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_RunPendingHandlers.png",src:s(51672).A+"",width:"227",height:"124"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void RunPendingHandlers()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-2",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"query-user-subscriptions",children:"Query User Subscriptions"}),"\n",(0,i.jsx)(d.p,{children:"Fetches the local view of the user's subscribed mods, including mods that are subscribed but not yet installed"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_QueryUserSubscriptions.png",src:s(49498).A+"",width:"230",height:"94"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"TMap QueryUserSubscriptions()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-3",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:[(0,i.jsx)(d.code,{children:"TMap"})," providing information about the subscribed mods"]}),"\n",(0,i.jsx)(d.h4,{id:"query-user-purchased-mods",children:"Query User Purchased Mods"}),"\n",(0,i.jsxs)(d.p,{children:["Returns the user's purchased mods. ",(0,i.jsx)(d.a,{href:"#fetchuserpurchasesasync",children:(0,i.jsx)(d.code,{children:"FetchUserPurchasesAsync"})})," must be called first to populate the cache."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_QueryUserPurchasedMods.png",src:s(85256).A+"",width:"247",height:"94"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"TMap QueryUserPurchasedMods()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-1",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-4",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-1",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["A ",(0,i.jsx)(d.code,{children:"TMap"})," of all purchases a user has made."]}),"\n",(0,i.jsx)(d.h4,{id:"query-user-installations",children:"Query User Installations"}),"\n",(0,i.jsx)(d.p,{children:"Fetches the subset of the user's subscribed mods that are installed and ready for loading"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_QueryUserInstallations.png",src:s(46391).A+"",width:"333",height:"126"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"TMap QueryUserInstallations(bool bIncludeOutdatedMods)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-5",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bIncludeOutdatedMods"})}),(0,i.jsx)(d.td,{children:"Include subscribed mods that are installed but have an updated version on the server that has not yet been installed"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-2",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:[(0,i.jsx)(d.code,{children:"TMap"})," providing information about the subscribed mods"]}),"\n",(0,i.jsx)(d.h4,{id:"query-system-installations",children:"Query System Installations"}),"\n",(0,i.jsx)(d.p,{children:"Fetches all mods installed on the system, including those installed by other users."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_QuerySystemInstallations.png",src:s(17253).A+"",width:"239",height:"94"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"TMap QuerySystemInstallations()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-6",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-3",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["A ",(0,i.jsx)(d.code,{children:"TMap"})," of all mods installed on the system, including those installed by other users."]}),"\n",(0,i.jsx)(d.h4,{id:"prioritize-transfer-for-mod",children:"Prioritize Transfer for Mod"}),"\n",(0,i.jsx)(d.p,{children:"Cancels or suspends the current mod update, installation, or upload, and begins processing a pending operation for the specified mod ID"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_PrioritizeTransferForMod.png",src:s(39846).A+"",width:"271",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode PrioritizeTransferForMod(FModioModID ModToPrioritize)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-2",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-7",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModToPrioritize"})}),(0,i.jsx)(d.td,{children:"The ID for the mod to prioritize"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-4",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"Error code indicating the status of the prioritization request. Will be empty if the prioritization was successful or if the mod was already being processed"}),"\n",(0,i.jsx)(d.h5,{id:"error-values-1",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid or not present in the list of pending operations"})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"kill-background-thread",children:"Kill Background Thread"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_KillBackgroundThread.png",src:s(25607).A+"",width:"227",height:"124"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void KillBackgroundThread()\n"})}),"\n",(0,i.jsx)(d.h4,{id:"verifyuserauthenticationasync",children:"VerifyUserAuthenticationAsync"}),"\n",(0,i.jsx)(d.p,{children:"Queries the server to verify the state of the currently authenticated user if there is one present"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_VerifyUserAuthenticationAsync.png",src:s(83587).A+"",width:"265",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_VerifyUserAuthenticationAsync(FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-3",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-8",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsxs)(d.td,{children:["Callback invoked with the results of the verification process. An empty ",(0,i.jsx)(d.code,{children:"ModioErrorCode"})," indicates successful verification i.e. the mod.io server was contactable and the user's authentication remains valid."]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-2",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"unsubscribefrommodasync",children:"UnsubscribeFromModAsync"}),"\n",(0,i.jsx)(d.p,{children:"Sends a request to the mod.io server to remove the specified mod from the user's list of subscriptions. If no other local users are subscribed to the specified mod this function will also mark the mod for uninstallation by the SDK."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync.png",src:s(65298).A+"",width:"248",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_UnsubscribeFromModAsync(FModioModID ModToUnsubscribeFrom, FOnErrorOnlyDelegate OnUnsubscribeComplete)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-4",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-9",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModToUnsubscribeFrom"})}),(0,i.jsx)(d.td,{children:"Mod ID of the mod requiring unsubscription."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"On Unsubscribe Complete"})}),(0,i.jsx)(d.td,{children:"Callback invoked when the unsubscription request is completed."})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-3",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,i.jsx)(d.td,{children:"Specified mod does not exist or was deleted"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"unmuteuserasync",children:"UnmuteUserAsync"}),"\n",(0,i.jsx)(d.p,{children:"Unmute a user. This allows mod.io to display mods authored by the now unmuted user when performing searches."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_UnmuteUserAsync.png",src:s(2124).A+"",width:"227",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_UnmuteUserAsync(FModioUserID UserID, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-5",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-10",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserID"})}),(0,i.jsx)(d.td,{children:"ID of the user to unmute"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code indicating success or failure of unmuting the user."})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-4",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied user ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"subscribetomodasync",children:"SubscribeToModAsync"}),"\n",(0,i.jsx)(d.p,{children:"Sends a request to the mod.io server to add the specified mod to the user's list of subscriptions, and marks the mod for local installation by the SDK"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SubscribeToModAsync.png",src:s(8274).A+"",width:"251",height:"218"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_SubscribeToModAsync(FModioModID ModToSubscribeTo, bool IncludeDependencies, FOnErrorOnlyDelegate OnSubscribeComplete)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-6",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-11",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModToSubscribeTo"})}),(0,i.jsx)(d.td,{children:"Mod ID of the mod requiring a subscription."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"IncludeDependencies"})}),(0,i.jsx)(d.td,{children:"Subscribe to all dependencies as well."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"On Subscribe Complete"})}),(0,i.jsx)(d.td,{children:"Callback invoked when the subscription request is completed."})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-5",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,i.jsx)(d.td,{children:"Specified mod does not exist or was deleted"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"submitnewmodfileformod",children:"SubmitNewModFileForMod"}),"\n",(0,i.jsxs)(d.p,{children:["Queues the upload of a new modfile release for the specified mod using the submitted parameters. This function takes an ",(0,i.jsx)(d.code,{children:"ModioCreateModFileParams"})," object to specify the path to the root folder of the new modfile. The plugin will compress the folder's contents into a .zip archive and queue the result for upload. When the upload completes, a mod management event will be triggered. Note the plugin is also responsible for decompressing the archive upon its installation at a later point in time."]}),"\n",(0,i.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,i.jsx)(d.p,{children:"This function is part of an experimental feature and is subject to change."})}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SubmitNewModFileForMod.png",src:s(95258).A+"",width:"237",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitNewModFileForMod(FModioModID Mod, FModioCreateModFileParams Params)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-7",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-12",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Mod"})}),(0,i.jsx)(d.td,{children:"The ID of the mod you are submitting a file for"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Params"})}),(0,i.jsx)(d.td,{children:"Information about the mod file being created, including the root path of the directory that will be archived"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-6",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"submitnewmodasync",children:"SubmitNewModAsync"}),"\n",(0,i.jsx)(d.p,{children:"Requests the creation of a new mod on the server with the specified parameters"}),"\n",(0,i.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,i.jsx)(d.p,{children:"This function is part of an experimental feature and is subject to change."})}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SubmitNewModAsync.png",src:s(8127).A+"",width:"227",height:"214"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitNewModAsync(FModioModCreationHandle Handle, FModioCreateModParams Params, FOnSubmitNewModDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-8",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-13",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Handle"})}),(0,i.jsxs)(d.td,{children:["The ",(0,i.jsx)(d.code,{children:"ModioModCreationHandle"})," for this submission. Once this method invokes your callback indicating success, the ",(0,i.jsx)(d.code,{children:"ModioModCreationHandle"})," is invalid for the rest of the session. You should request a new one for the next submission attempt."]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Params"})}),(0,i.jsx)(d.td,{children:"Information about the new mod to create"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsxs)(d.td,{children:["Callback providing a status code and an optional ",(0,i.jsx)(d.code,{children:"ModioModID"})," for the newly created mod"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-7",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsxs)(d.td,{children:["Some fields in ",(0,i.jsx)(d.code,{children:"Params"})," did not pass validation"]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"submitmodratingasync",children:"SubmitModRatingAsync"}),"\n",(0,i.jsx)(d.p,{children:"Submits a rating for a mod on behalf of the current user. Submit a neutral rating to effectively clear a rating already submitted by a user. Submitting other values will overwrite any existing rating submitted by this user."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SubmitModRatingAsync.png",src:s(69256).A+"",width:"306",height:"242"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitModRatingAsync(FModioModID Mod, EModioRating Rating, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-9",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-14",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Mod"})}),(0,i.jsx)(d.td,{children:"The mod the user is rating"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Rating"})}),(0,i.jsx)(d.td,{children:"The rating the user wishes to submit"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code indicating success or failure of the rating submission"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-8",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,i.jsx)(d.td,{children:"Specified mod does not exist or was deleted"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"submitmodchangesasync-1",children:"SubmitModChangesAsync"}),"\n",(0,i.jsxs)(d.p,{children:["Edits the parameters of a mod by updating any fields set in the ",(0,i.jsx)(d.code,{children:"Params"})," object to match the passed-in values. Fields left empty on the ",(0,i.jsx)(d.code,{children:"Params"})," object will not be updated."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SubmitModChangesAsync.png",src:s(70604).A+"",width:"233",height:"214"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitModChangesAsync(FModioModID Mod, FModioEditModParams Params, FOnGetModInfoDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-10",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-15",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Mod"})}),(0,i.jsx)(d.td,{children:"The ID of the mod you wish to edit"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Params"})}),(0,i.jsx)(d.td,{children:"Descriptor containing the fields that should be altered."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsxs)(d.td,{children:["The callback invoked when the changes have been submitted containing an optional updated ",(0,i.jsx)(d.code,{children:"ModioModInfo"})," object if the edits were performed successfully"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-9",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsxs)(d.td,{children:["Some fields in ",(0,i.jsx)(d.code,{children:"Params"})," did not pass validation"]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"shutdownasync",children:"ShutdownAsync"}),"\n",(0,i.jsxs)(d.p,{children:["Cancels any running internal operations, frees SDK resources, and invokes any pending callbacks with an ",(0,i.jsx)(d.code,{children:"OperationCanceled"})," error category. This function will NOT block while the deinitialization occurs."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ShutdownAsync.png",src:s(85619).A+"",width:"232",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_ShutdownAsync(FOnErrorOnlyDelegate OnShutdownComplete)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-16",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"On Shutdown Complete"})}),(0,i.jsxs)(d.td,{children:["Callback invoked when the plugin is shut down and calling ",(0,i.jsx)(d.a,{href:"#run-pending-handlers",children:(0,i.jsx)(d.code,{children:"RunPendingHandlers"})})," is no longer required"]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"setlanguage",children:"SetLanguage"}),"\n",(0,i.jsx)(d.p,{children:"Set language to get corresponding data from the server"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SetLanguage.png",src:s(40275).A+"",width:"306",height:"182"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_SetLanguage(EModioLanguage Locale)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-17",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Locale"})}),(0,i.jsx)(d.td,{children:"Language to set"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"requestemailauthcodeasync",children:"RequestEmailAuthCodeAsync"}),"\n",(0,i.jsx)(d.p,{children:"Begins email authentication for the current session by requesting a one-time code be sent to the specified email address."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_RequestEmailAuthCodeAsync.png",src:s(94989).A+"",width:"252",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_RequestEmailAuthCodeAsync(FModioEmailAddress EmailAddress, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-11",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-authenticated-user"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-18",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EmailAddress"})}),(0,i.jsx)(d.td,{children:"The email address to send the code to"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code indicating the outcome of the request"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-10",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserAlreadyAuthenticatedError"})}),(0,i.jsxs)(d.td,{children:["Current user is already authenticated. De-authenticate the current user with ",(0,i.jsx)(d.a,{href:"#clearuserdataasync",children:(0,i.jsx)(d.code,{children:"ClearUserDataAsync"})}),", and re-initialize the SDK by calling ",(0,i.jsx)(d.a,{href:"#shutdownasync",children:(0,i.jsx)(d.code,{children:"ShutdownAsync"})})," then ",(0,i.jsx)(d.a,{href:"#initializeasync",children:(0,i.jsx)(d.code,{children:"InitializeAsync"})}),"."]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"reportcontentasync",children:"ReportContentAsync"}),"\n",(0,i.jsxs)(d.p,{children:["Sends a content report to mod.io. When using this function, please inform your users that if they provide their contact name or details in the ",(0,i.jsx)(d.code,{children:"Report"})," parameter, this data may be shared with the person responsible for the content being reported. For more information on what data in a report will be shared with whom, please see ",(0,i.jsx)(d.a,{href:"https://mod.io/report",children:"our website's report form"}),"."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ReportContentAsync.png",src:s(57110).A+"",width:"227",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_ReportContentAsync(FModioReportParams Report, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-12",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-19",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Report"})}),(0,i.jsx)(d.td,{children:"Information about the content being reported and a description of the report."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code to indicate successful submission of the report."})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-11",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"Required information in the report did not pass validation"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsxs)(d.td,{children:["The mod ID, game ID, or user ID supplied to ",(0,i.jsx)(d.code,{children:"Report"})," is invalid"]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"removefromtempmodset",children:"RemoveFromTempModSet"}),"\n",(0,i.jsxs)(d.p,{children:["Remove mods from a temp mod set. Every temp mod specified by ",(0,i.jsx)(d.code,{children:"ModIds"})," will be uninstalled unless the user is already subscribed."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_RemoveFromTempModSet.png",src:s(74399).A+"",width:"235",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode K2_RemoveFromTempModSet(TArray ModIds)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-13",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"mod-management-enabled"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"temp-mod-set-initialized"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-20",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModIds"})}),(0,i.jsxs)(d.td,{children:["TArray of ",(0,i.jsx)(d.code,{children:"ModioModID"}),"s to remove as temp mods"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-5",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["Error code indicating the status of the ",(0,i.jsx)(d.code,{children:"TempModSet"}),". Will be empty if it was successful"]}),"\n",(0,i.jsx)(d.h5,{id:"error-values-12",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModManagementDisabled"})}),(0,i.jsx)(d.td,{children:"Mod management not enabled"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TempModSetNotInitialized"})}),(0,i.jsxs)(d.td,{children:[(0,i.jsx)(d.code,{children:"TempModSet"})," not initialized"]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"refreshuserentitlementsasync",children:"RefreshUserEntitlementsAsync"}),"\n",(0,i.jsx)(d.p,{children:"Requests mod.io refresh the available entitlements for the current user purchased through the portal and currently authenticated."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_RefreshUserEntitlementsAsync.png",src:s(13821).A+"",width:"265",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_RefreshUserEntitlementsAsync(FModioEntitlementParams Params, FOnRefreshUserEntitlementsDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-14",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-21",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Params"})}),(0,i.jsx)(d.td,{children:"Additional parameters."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing an error code indicating success or failure of the refresh operation."})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"queryuserprofile",children:"QueryUserProfile"}),"\n",(0,i.jsx)(d.p,{children:"Fetches the currently authenticated mod.io user profile if there is one"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_QueryUserProfile.png",src:s(70005).A+"",width:"227",height:"92"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioOptionalUser K2_QueryUserProfile()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-22",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-6",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:[(0,i.jsx)(d.code,{children:"ModioOptionalUser"})," object containing profile information"]}),"\n",(0,i.jsx)(d.h4,{id:"querytempmodset",children:"QueryTempModSet"}),"\n",(0,i.jsxs)(d.p,{children:["Query every system and temp mod in ",(0,i.jsx)(d.code,{children:"TempModSet"})]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_QueryTempModSet.png",src:s(63699).A+"",width:"227",height:"126"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"TMap K2_QueryTempModSet()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-23",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-7",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["TMap using ",(0,i.jsx)(d.code,{children:"ModioModID"})," as keys and ",(0,i.jsx)(d.code,{children:"ModioModCollectionEntry"})," objects providing information about mods in ",(0,i.jsx)(d.code,{children:"TempModSet"})]}),"\n",(0,i.jsx)(d.h4,{id:"querycurrentmodupdate",children:"QueryCurrentModUpdate"}),"\n",(0,i.jsx)(d.p,{children:"Provides progress information for a mod installation or update operation if one is currently in progress."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_QueryCurrentModUpdate.png",src:s(16111).A+"",width:"227",height:"92"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioOptionalModProgressInfo K2_QueryCurrentModUpdate()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-24",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-8",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:[(0,i.jsx)(d.code,{children:"ModioOptionalModProgressInfo"})," object containing information regarding the progress of the installation operation."]}),"\n",(0,i.jsx)(d.h4,{id:"purchasemodasync",children:"PurchaseModAsync"}),"\n",(0,i.jsx)(d.p,{children:"Purchases a mod for the current player"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_PurchaseModAsync.png",src:s(21296).A+"",width:"227",height:"214"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_PurchaseModAsync(FModioModID ModID, FModioUnsigned64 ExpectedPrice, FOnPurchaseModDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-15",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-25",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModID"})}),(0,i.jsx)(d.td,{children:"ID of the mod to purchase"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ExpectedPrice"})}),(0,i.jsxs)(d.td,{children:["The price the user is expected to pay for the mod, generally ",(0,i.jsx)(d.a,{href:"#modiomodinfo",children:(0,i.jsx)(d.code,{children:"ModioModInfo.Price"})}),". This ensures that there is consistency between the displayed price and the price in the backend. If there is a mismatch, the purchase will fail."]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback invoked with purchase information once the purchase is completed."})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"previewexternalupdatesasync",children:"PreviewExternalUpdatesAsync"}),"\n",(0,i.jsxs)(d.p,{children:["Retrieve a list of updates between the users local mod state, and the server-side state. This allows you to identify which mods will be modified by the next call to ",(0,i.jsx)(d.a,{href:"#fetchexternalupdatesasync",children:(0,i.jsx)(d.code,{children:"FetchExternalUpdatesAsync"})})," in order to perform any content management (such as unloading files) that might be required."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_PreviewExternalUpdatesAsync.png",src:s(79630).A+"",width:"261",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_PreviewExternalUpdatesAsync(FOnPreviewExternalUpdatesDelegate OnPreviewDone)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-26",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"On Preview Done"})}),(0,i.jsx)(d.td,{children:"Callback invoked when the external state has been retrieved. It contains a dictionary with ModID as keys and change maps as values. Empty when there are no differences between local and the mod.io API service"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"muteuserasync",children:"MuteUserAsync"}),"\n",(0,i.jsx)(d.p,{children:"Mute a user. This will prevent mod.io from returning mods authored by the muted user. when performing searches."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_MuteUserAsync.png",src:s(87007).A+"",width:"227",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_MuteUserAsync(FModioUserID UserID, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-16",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-27",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserID"})}),(0,i.jsx)(d.td,{children:"ID of the User to mute"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code indicating success or failure of muting the user."})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-13",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied user ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"metricssessionstartasync",children:"MetricsSessionStartAsync"}),"\n",(0,i.jsx)(d.p,{children:"Start a metrics play session"}),"\n",(0,i.jsx)(d.admonition,{title:"Premium Feature",type:"info",children:(0,i.jsxs)(d.p,{children:["This function requires the ",(0,i.jsx)(d.strong,{children:"Metrics"})," premium feature. Please contact your mod.io representative for more details."]})}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_MetricsSessionStartAsync.png",src:s(35372).A+"",width:"238",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_MetricsSessionStartAsync(FModioMetricsSessionParams Params, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-28",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Params"})}),(0,i.jsxs)(d.td,{children:[(0,i.jsx)(d.code,{children:"ModioMetricsSessionParams"})," struct containing information of what and how to start a metrics session"]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing an error code indicating success or failure of the session start operation"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-14",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RateLimited"})}),(0,i.jsx)(d.td,{children:"Too many frequent calls to the API. Wait some time and try again."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidUser"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SessionNotInitialized"})}),(0,i.jsx)(d.td,{children:"Metrics session has not yet been initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SessionIsActive"})}),(0,i.jsx)(d.td,{children:"Metrics session is currently active and running"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"BadParameter"})}),(0,i.jsx)(d.td,{children:"One or more values in the Metric Session Parameters are invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"metricssessionsendheartbeatonceasync",children:"MetricsSessionSendHeartbeatOnceAsync"}),"\n",(0,i.jsx)(d.p,{children:"Sends a single heartbeat to the mod.io server to indicate a session is still active"}),"\n",(0,i.jsx)(d.admonition,{title:"Premium Feature",type:"info",children:(0,i.jsxs)(d.p,{children:["This function requires the ",(0,i.jsx)(d.strong,{children:"Metrics"})," premium feature. Please contact your mod.io representative for more details."]})}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatOnceAsync.png",src:s(91175).A+"",width:"326",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_MetricsSessionSendHeartbeatOnceAsync(FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-29",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing an error code indicating success or failure of the session heartbeat operation"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-15",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidUser"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SessionNotInitialized"})}),(0,i.jsx)(d.td,{children:"Metrics session has not yet been initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SessionIsNotActive"})}),(0,i.jsxs)(d.td,{children:["Metrics session is not currently running. Call ",(0,i.jsx)(d.a,{href:"#metricssessionstartasync",children:(0,i.jsx)(d.code,{children:"MetricsSessionStartAsync"})})," before attempting to sending a heartbeat."]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"metricssessionsendheartbeatatintervalasync",children:"MetricsSessionSendHeartbeatAtIntervalAsync"}),"\n",(0,i.jsx)(d.p,{children:"Sends a constant heartbeat at a given interval to the mod.io server to indicate a session is still active"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync.png",src:s(92702).A+"",width:"354",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_MetricsSessionSendHeartbeatAtIntervalAsync(FModioUnsigned64 IntervalSeconds, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-30",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"IntervalSeconds"})}),(0,i.jsx)(d.td,{children:"The frequency in seconds to send a heartbeat to the mod.io server"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing an error code indicating success or failure of the session heartbeat operation"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-16",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidUser"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SessionNotInitialized"})}),(0,i.jsx)(d.td,{children:"Metrics session has not yet been initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SessionIsNotActive"})}),(0,i.jsxs)(d.td,{children:["Metrics session is not currently running. Call ",(0,i.jsx)(d.a,{href:"#metricssessionstartasync",children:(0,i.jsx)(d.code,{children:"MetricsSessionStartAsync"})})," before attempting to sending a heartbeat."]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"metricssessionendasync",children:"MetricsSessionEndAsync"}),"\n",(0,i.jsx)(d.p,{children:"Ends a metrics play session"}),"\n",(0,i.jsx)(d.admonition,{title:"Premium Feature",type:"info",children:(0,i.jsxs)(d.p,{children:["This function requires the ",(0,i.jsx)(d.strong,{children:"Metrics"})," premium feature. Please contact your mod.io representative for more details."]})}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_MetricsSessionEndAsync.png",src:s(43781).A+"",width:"229",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_MetricsSessionEndAsync(FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-31",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing an error code indicating success or failure of the session end operation"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-17",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RateLimited"})}),(0,i.jsx)(d.td,{children:"Too many frequent calls to the API. Wait some time and try again."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidUser"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SessionNotInitialized"})}),(0,i.jsx)(d.td,{children:"Metrics session has not yet been initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SessionIsNotActive"})}),(0,i.jsxs)(d.td,{children:["Metrics session is not currently running. Call ",(0,i.jsx)(d.a,{href:"#metricssessionstartasync",children:(0,i.jsx)(d.code,{children:"MetricsSessionStartAsync"})})," before attempting to end a session."]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"listusergamesasync",children:"ListUserGamesAsync"}),"\n",(0,i.jsx)(d.p,{children:"Provides a list of games for the current user that match the parameters specified in the filter"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ListUserGamesAsync.png",src:s(34935).A+"",width:"227",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_ListUserGamesAsync(FModioFilterParams Filter, FOnListUserGamesDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-17",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-32",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Filter"})}),(0,i.jsxs)(d.td,{children:[(0,i.jsx)(d.a,{href:"#modiofilterparams",children:(0,i.jsx)(d.code,{children:"ModioFilterParams"})})," object containing any filters that should be applied to the query"]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsxs)(d.td,{children:["Callback invoked with a status code and an optional ",(0,i.jsx)(d.code,{children:"ModioGameInfoList"})," providing game profiles"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-18",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"listusercreatedmodsasync",children:"ListUserCreatedModsAsync"}),"\n",(0,i.jsx)(d.p,{children:"Provides a list of mods that the user has submitted or is a team member of for the current game, applying the parameters specified in the filter."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ListUserCreatedModsAsync.png",src:s(25489).A+"",width:"245",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_ListUserCreatedModsAsync(FModioFilterParams Filter, FOnListUserCreatedModsDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-18",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-33",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Filter"})}),(0,i.jsx)(d.td,{children:"Filter to apply when listing the user's created mods."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback invoked when the call succeeds, or when an error occurs."})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-19",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RateLimited"})}),(0,i.jsx)(d.td,{children:"Too many frequent calls to the API. Wait some time and try again."})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"listallmodsasync",children:"ListAllModsAsync"}),"\n",(0,i.jsx)(d.p,{children:"Provides a list of mods for the current game that match the parameters specified in the filter"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ListAllModsAsync.png",src:s(1655).A+"",width:"227",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_ListAllModsAsync(FModioFilterParams Filter, FOnListAllModsDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-19",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-34",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Filter"})}),(0,i.jsxs)(d.td,{children:[(0,i.jsx)(d.a,{href:"#modiofilterparams",children:(0,i.jsx)(d.code,{children:"ModioFilterParams"})})," object containing any filters that should be applied to the query"]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsxs)(d.td,{children:["Callback invoked with a status code and an optional ",(0,i.jsx)(d.code,{children:"ModioModInfoList"})," providing mod profiles"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-20",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"inittempmodset",children:"InitTempModSet"}),"\n",(0,i.jsxs)(d.p,{children:["Install every temp mod specified by ",(0,i.jsx)(d.code,{children:"ModIds"})," if not already installed."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_InitTempModSet.png",src:s(59125).A+"",width:"227",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode K2_InitTempModSet(TArray ModIds)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-20",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"mod-management-enabled"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-35",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModIds"})}),(0,i.jsxs)(d.td,{children:["TArray of ",(0,i.jsx)(d.code,{children:"ModioModID"}),"s to install as temp mods"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-9",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["Error code indicating the status of the ",(0,i.jsx)(d.code,{children:"TempModSet"}),". Will be empty if it was successful"]}),"\n",(0,i.jsx)(d.h5,{id:"error-values-21",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModManagementDisabled"})}),(0,i.jsx)(d.td,{children:"Mod management not enabled"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"initializeasync",children:"InitializeAsync"}),"\n",(0,i.jsx)(d.p,{children:"Initializes the SDK for the given user. Loads the state of mods installed on the system as well as the set of mods the specified user has installed on this device"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_InitializeAsync.png",src:s(1735).A+"",width:"227",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_InitializeAsync(FModioInitializeOptions InitializeOptions, FOnErrorOnlyDelegate OnInitComplete)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-36",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InitializeOptions"})}),(0,i.jsx)(d.td,{children:"Parameters to the function packed as a struct where all members needs to be initialized for the call to succeed"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"On Init Complete"})}),(0,i.jsx)(d.td,{children:"Callback which will be invoked with the result of initialization"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-22",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FilesystemError"})}),(0,i.jsx)(d.td,{children:"Couldn't create the user data or common data folders"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ConfigurationError"})}),(0,i.jsxs)(d.td,{children:["InitializeOptions contains an invalid value - inspect ",(0,i.jsx)(d.code,{children:"ec.value()"})," to determine what was incorrect"]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKAlreadyInitialized"})}),(0,i.jsx)(d.td,{children:"SDK already initialized"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getuserwalletbalanceasync",children:"GetUserWalletBalanceAsync"}),"\n",(0,i.jsxs)(d.p,{children:["Gets the users current wallet balance. This will also create a wallet for a user if one does not exist. You should ensure this is called prior to calling ",(0,i.jsx)(d.a,{href:"#purchasemodasync",children:(0,i.jsx)(d.code,{children:"PurchaseModAsync"})})," purchase will fail."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync.png",src:s(43355).A+"",width:"248",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetUserWalletBalanceAsync(FOnGetUserWalletBalanceDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-21",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-37",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback invoked with the users wallet balance"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getusermediaasync-avatar",children:"GetUserMediaAsync (Avatar)"}),"\n",(0,i.jsx)(d.p,{children:"Downloads the avatar of the currently authenticated user. Will only perform a download if there is no local cache of the avatar or if that cached copy is out-of-date."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetUserMediaAvatarAsync.png",src:s(91533).A+"",width:"306",height:"212"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetUserMediaAvatarAsync(EModioAvatarSize AvatarSize, FOnGetMediaDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-22",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-38",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"AvatarSize"})}),(0,i.jsx)(d.td,{children:"Parameter specifying the size of avatar image to download"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code for the download and an optional path to the downloaded image"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-23",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getuserdelegationtokenasync",children:"GetUserDelegationTokenAsync"}),"\n",(0,i.jsx)(d.p,{children:"Get a user delegation token that can be used for S2S service calls"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetUserDelegationTokenAsync.png",src:s(99183).A+"",width:"263",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetUserDelegationTokenAsync(FOnGetUserDelegationTokenDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-23",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-39",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback invoked with purchase information once the purchase is completed."})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"gettermsofuseasync",children:"GetTermsOfUseAsync"}),"\n",(0,i.jsx)(d.p,{children:"This function retrieves the information required for a game to display the mod.io terms of use to a player who wishes to create a mod.io account"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetTermsOfUseAsync.png",src:s(93492).A+"",width:"227",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetTermsOfUseAsync(FOnGetTermsOfUseDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-24",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-40",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback invoked with the terms of use data once retrieved from the server"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-24",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getmutedusersasync",children:"GetMutedUsersAsync"}),"\n",(0,i.jsx)(d.p,{children:"List all the users that have been muted by the current user."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetMutedUsersAsync.png",src:s(79944).A+"",width:"227",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetMutedUsersAsync(FOnMuteUsersDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-25",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-41",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code indicating success or failure of the operation, and an optional containing a list of muted users if successful."})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-25",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getmodtagoptionsasync",children:"GetModTagOptionsAsync"}),"\n",(0,i.jsxs)(d.p,{children:["Fetches the available tags used on mods for the current game. These tags can them be used in conjunction with the FilterParams passed to ",(0,i.jsx)(d.a,{href:"#listallmodsasync",children:(0,i.jsx)(d.code,{children:"ListAllModsAsync"})})," Will be cached when first received"]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModTagOptionsAsync.png",src:s(57363).A+"",width:"229",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModTagOptionsAsync(FOnGetModTagOptionsDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-26",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-42",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsxs)(d.td,{children:["Callback providing a status code and an optional ",(0,i.jsx)(d.code,{children:"ModioModTagOptions"})," object containing the available tags"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-26",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getmodmediaasync-logo",children:"GetModMediaAsync (Logo)"}),"\n",(0,i.jsx)(d.p,{children:"Downloads the logo for the specified mod. Will use existing file if it is already present on disk"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModMediaLogoAsync.png",src:s(24398).A+"",width:"306",height:"242"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModMediaLogoAsync(FModioModID ModId, EModioLogoSize LogoSize, FOnGetMediaDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-27",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-43",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModId"})}),(0,i.jsx)(d.td,{children:"Mod ID for use in logo retrieval"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"LogoSize"})}),(0,i.jsx)(d.td,{children:"Parameter indicating the size of logo that's required"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code and an optional path object pointing to the location of the downloaded image"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-27",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,i.jsx)(d.td,{children:"Specified mod media does not exist or was deleted"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InsufficientSpace"})}),(0,i.jsx)(d.td,{children:"Not enough space for the file"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getmodmediaasync-gallery-image",children:"GetModMediaAsync (Gallery Image)"}),"\n",(0,i.jsx)(d.p,{children:"Get a gallery image for the specified mod ID. If it already exists on disk the file will be reused unless it is outdated"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync.png",src:s(80586).A+"",width:"306",height:"277"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModMediaGalleryImageAsync(FModioModID ModId, EModioGallerySize GallerySize, int32 Index, FOnGetMediaDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-28",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-44",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModId"})}),(0,i.jsx)(d.td,{children:"The mod you want to retrieve an image for"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GallerySize"})}),(0,i.jsx)(d.td,{children:"Size of the image you want to retrieve"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Index"})}),(0,i.jsx)(d.td,{children:"The zero-based index of the image you want to retrieve"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback containing a status code and an Optional containing a path to the image file on disk"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-28",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,i.jsx)(d.td,{children:"Specified mod media does not exist or was deleted"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InsufficientSpace"})}),(0,i.jsx)(d.td,{children:"Not enough space for the file"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getmodmediaasync-avatar",children:"GetModMediaAsync (Avatar)"}),"\n",(0,i.jsx)(d.p,{children:"Downloads the creator avatar for a specified mod. Will use existing file if it is already present on disk and not outdated"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModMediaAvatarAsync.png",src:s(59484).A+"",width:"306",height:"242"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModMediaAvatarAsync(FModioModID ModId, EModioAvatarSize AvatarSize, FOnGetMediaDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-29",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-45",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModId"})}),(0,i.jsx)(d.td,{children:"ID of the mod the creator avatar will be retrieved for"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"AvatarSize"})}),(0,i.jsx)(d.td,{children:"Parameter indicating the size of avatar image that's required"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code and an optional path object pointing to the location of the downloaded image"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-29",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,i.jsx)(d.td,{children:"Specified mod media does not exist or was deleted"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InsufficientSpace"})}),(0,i.jsx)(d.td,{children:"Not enough space for the file"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getmodinfoasync",children:"GetModInfoAsync"}),"\n",(0,i.jsx)(d.p,{children:"Fetches detailed information about the specified mod, including description and file metadata for the most recent release"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModInfoAsync.png",src:s(21913).A+"",width:"227",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModInfoAsync(FModioModID ModId, FOnGetModInfoDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-30",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-46",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModId"})}),(0,i.jsx)(d.td,{children:"Mod ID of the mod to fetch data"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsxs)(d.td,{children:["Callback providing a status code and an optional ",(0,i.jsx)(d.code,{children:"ModioModInfo"})," object with the mod's extended information"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-30",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,i.jsx)(d.td,{children:"Specified mod does not exist or was deleted"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getmoddependenciesasync",children:"GetModDependenciesAsync"}),"\n",(0,i.jsx)(d.p,{children:"For a given Mod ID, fetches a list of any mods that the creator has marked as dependencies"}),"\n",(0,i.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,i.jsx)(d.p,{children:"This function is part of an experimental feature and is subject to change."})}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModDependenciesAsync.png",src:s(17784).A+"",width:"245",height:"218"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModDependenciesAsync(FModioModID ModID, bool Recursive, FOnGetModDependenciesDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-31",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-47",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModID"})}),(0,i.jsx)(d.td,{children:"The mod to retrieve dependencies for"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Recursive"})}),(0,i.jsx)(d.td,{children:"Fetches dependencies recursively up to a depth of 5"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsxs)(d.td,{children:["Callback providing a status code and an optional ",(0,i.jsx)(d.code,{children:"ModioModTagOptions"})," object containing the available tags"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-31",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"getmodcreationhandle",children:"GetModCreationHandle"}),"\n",(0,i.jsxs)(d.p,{children:["Gets a new mod handle for use with ",(0,i.jsx)(d.a,{href:"#submitnewmodasync",children:(0,i.jsx)(d.code,{children:"SubmitNewModAsync"})}),"."]}),"\n",(0,i.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,i.jsx)(d.p,{children:"This function is part of an experimental feature and is subject to change."})}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModCreationHandle.png",src:s(68156).A+"",width:"227",height:"124"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioModCreationHandle K2_GetModCreationHandle()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-48",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"getlanguage",children:"GetLanguage"}),"\n",(0,i.jsx)(d.p,{children:"Get the currently applied language"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetLanguage.png",src:s(86039).A+"",width:"227",height:"124"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioLanguage K2_GetLanguage()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-49",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-10",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"Current language"}),"\n",(0,i.jsx)(d.h4,{id:"getgameinfoasync",children:"GetGameInfoAsync"}),"\n",(0,i.jsx)(d.p,{children:"Fetches detailed information about the specified game"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetGameInfoAsync.png",src:s(87367).A+"",width:"227",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_GetGameInfoAsync(FModioGameID GameID, FOnGetGameInfoDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-32",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-50",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameID"})}),(0,i.jsx)(d.td,{children:"Game ID of the game data to fetch"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsxs)(d.td,{children:["Callback providing a status code and an optional ",(0,i.jsx)(d.code,{children:"ModioGameInfo"})," object with the game's extended information"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-32",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,i.jsx)(d.td,{children:"Specified game does not exist"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied game ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"forceuninstallmodasync",children:"ForceUninstallModAsync"}),"\n",(0,i.jsxs)(d.p,{children:["Forcibly uninstalls a mod from the system. This can be used when the host application requires additional space for other mods. The current user must not be subscribed to the mod to force uninstall. To remove a mod the current user is subscribed to, first use ",(0,i.jsx)(d.a,{href:"#unsubscribefrommodasync",children:(0,i.jsx)(d.code,{children:"UnsubscribeFromModAsync"})}),". If the mod does not uninstall (due to a different user on the same system remaining subscribed), ",(0,i.jsx)(d.code,{children:"ForceUninstallModAsync"})," can be called next."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ForceUninstallModAsync.png",src:s(30612).A+"",width:"227",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_ForceUninstallModAsync(FModioModID ModToRemove, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-51",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModToRemove"})}),(0,i.jsx)(d.td,{children:"The mod ID to force uninstall."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback invoked indicating success or failure of the uninstallation."})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-33",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:"ApiErrorRefSuccess"}),(0,i.jsx)(d.td,{children:"User is still subscribed to the specified mod"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"fetchuserpurchasesasync",children:"FetchUserPurchasesAsync"}),"\n",(0,i.jsxs)(d.p,{children:["Fetches the user's purchases. This populates a runtime cache of purchase information that can be accessed using ",(0,i.jsx)(d.a,{href:"#query-user-purchased-mods",children:(0,i.jsx)(d.code,{children:"QueryUserPurchasedMods"})}),"."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync.png",src:s(10208).A+"",width:"240",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_FetchUserPurchasesAsync(FOnFetchUserPurchasesDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-33",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-52",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback invoked once the call has been completed."})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"fetchexternalupdatesasync",children:"FetchExternalUpdatesAsync"}),"\n",(0,i.jsx)(d.p,{children:"Synchronises the local list of the current user's subscribed mods with the server. Any mods that have been externally subscribed will be automatically marked for installation, and mods that have been externally removed from the user's subscriptions may be uninstalled if no other local users have a current subscription."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync.png",src:s(38798).A+"",width:"247",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_FetchExternalUpdatesAsync(FOnErrorOnlyDelegate OnFetchDone)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-53",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"On Fetch Done"})}),(0,i.jsx)(d.td,{children:"Callback invoked when the external state has been retrieved and merged with the local data"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"enablemodmanagement",children:"EnableModManagement"}),"\n",(0,i.jsx)(d.p,{children:"Enables the automatic management of installed mods on the system based on the user's subscriptions."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_EnableModManagement.png",src:s(58799).A+"",width:"227",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode K2_EnableModManagement(FOnModManagementDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-54",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsxs)(d.td,{children:["This callback handler will be invoked with a ",(0,i.jsx)(d.a,{href:"#modiomodmanagementevent",children:(0,i.jsx)(d.code,{children:"ModioModManagementEvent"})})," for each mod operation performed by the SDK"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-11",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["An error code indicating success or failure of enabling mod management. Note that this is independent of error codes for mod management events. Inspect the ",(0,i.jsx)(d.code,{children:"Callback"})," for information on each mod management event."]}),"\n",(0,i.jsx)(d.h5,{id:"error-values-34",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModManagementAlreadyEnabled"})}),(0,i.jsx)(d.td,{children:"Mod management was already enabled. The mod management callback has not been changed."})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"closetempmodset",children:"CloseTempModSet"}),"\n",(0,i.jsx)(d.p,{children:"Uninstall every temp mod unless the user is subscribed."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_CloseTempModSet.png",src:s(50203).A+"",width:"227",height:"124"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode K2_CloseTempModSet()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-34",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"mod-management-enabled"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"temp-mod-set-initialized"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-55",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-12",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["Error code indicating the status of the ",(0,i.jsx)(d.code,{children:"TempModSet"}),". Will be empty if it was successful"]}),"\n",(0,i.jsx)(d.h5,{id:"error-values-35",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModManagementDisabled"})}),(0,i.jsx)(d.td,{children:"Mod management not enabled"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TempModSetNotInitialized"})}),(0,i.jsxs)(d.td,{children:[(0,i.jsx)(d.code,{children:"TempModSet"})," not initialized"]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"clearuserdataasync",children:"ClearUserDataAsync"}),"\n",(0,i.jsx)(d.p,{children:"De-authenticates the current mod.io user for the current session, and clears all user-specific data stored on the current device. Any subscribed mods that are installed but do not have other local users subscribed will be uninstalled"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ClearUserDataAsync.png",src:s(73239).A+"",width:"227",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_ClearUserDataAsync(FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-35",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-56",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code indicating the outcome of clearing the user data. Error codes returned by this function are informative only - it will always succeed."})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-36",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"No authenticated user"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"authenticateuserexternalasync",children:"AuthenticateUserExternalAsync"}),"\n",(0,i.jsx)(d.p,{children:"Uses platform-specific authentication to associate a mod.io user account with the current platform user"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_AuthenticateUserExternalAsync.png",src:s(69428).A+"",width:"306",height:"242"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_AuthenticateUserExternalAsync(FModioAuthenticationParams User, EModioAuthenticationProvider Provider, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-36",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-authenticated-user"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-57",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"User"})}),(0,i.jsx)(d.td,{children:"Authentication payload data to submit to the provider"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Provider"})}),(0,i.jsx)(d.td,{children:"The provider to use to perform the authentication"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback invoked once the authentication request has been made"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-37",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ConfigurationError"})}),(0,i.jsx)(d.td,{children:"The SDK's configuration is not valid"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The arguments passed to the function have failed validation"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserTermsOfUseError"})}),(0,i.jsx)(d.td,{children:"The user has not yet accepted the mod.io Terms of Use"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserAlreadyAuthenticatedError"})}),(0,i.jsxs)(d.td,{children:["Current user is already authenticated. De-authenticate the current user with ",(0,i.jsx)(d.a,{href:"#clearuserdataasync",children:(0,i.jsx)(d.code,{children:"ClearUserDataAsync"})}),", and re-initialize the SDK by calling ",(0,i.jsx)(d.a,{href:"#shutdownasync",children:(0,i.jsx)(d.code,{children:"ShutdownAsync"})})," followed by ",(0,i.jsx)(d.a,{href:"#initializeasync",children:(0,i.jsx)(d.code,{children:"InitializeAsync"})}),"."]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"authenticateuseremailasync",children:"AuthenticateUserEmailAsync"}),"\n",(0,i.jsx)(d.p,{children:"Completes email authentication for the current session by submitting the one-time code sent to the user's email address"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_AuthenticateUserEmailAsync.png",src:s(36043).A+"",width:"251",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_AuthenticateUserEmailAsync(FModioEmailAuthCode AuthenticationCode, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-37",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-authenticated-user"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-58",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"AuthenticationCode"})}),(0,i.jsx)(d.td,{children:"User's authentication code"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code indicating if authentication was successful or not"})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-38",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserAlreadyAuthenticatedError"})}),(0,i.jsxs)(d.td,{children:["Current user is already authenticated. De-authenticate the current user with ",(0,i.jsx)(d.a,{href:"#clearuserdataasync",children:(0,i.jsx)(d.code,{children:"ClearUserDataAsync"})}),", and re-initialize the SDK by calling ",(0,i.jsx)(d.a,{href:"#shutdownasync",children:(0,i.jsx)(d.code,{children:"ShutdownAsync"})})," then ",(0,i.jsx)(d.a,{href:"#initializeasync",children:(0,i.jsx)(d.code,{children:"InitializeAsync"})}),"."]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"archivemodasync",children:"ArchiveModAsync"}),"\n",(0,i.jsx)(d.p,{children:"Archives a mod. This mod will no longer be able to be viewed or retrieved via the SDK, but it will still exist should you choose to restore it at a later date. Archiving is restricted to team managers and administrators only. Note that restoration and permanent deletion of a mod is possible only via web interface."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ArchiveModAsync.png",src:s(30771).A+"",width:"227",height:"184"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_ArchiveModAsync(FModioModID Mod, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-38",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-59",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Mod"})}),(0,i.jsx)(d.td,{children:"The mod to be archived."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback providing a status code indicating success or failure of archiving the mod."})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"error-values-39",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InsufficientPermissions"})}),(0,i.jsx)(d.td,{children:"The authenticated user does not have permission to archive this mod. This action is restricted to team managers and administrators only."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,i.jsx)(d.td,{children:"Specified mod does not exist or was deleted"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"addtotempmodset",children:"AddToTempModSet"}),"\n",(0,i.jsxs)(d.p,{children:["Add mods to a Temp Mod Set. Every temp mod specified by ",(0,i.jsx)(d.code,{children:"ModIds"})," will be installed if not already installed."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_AddToTempModSet.png",src:s(9981).A+"",width:"227",height:"154"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode K2_AddToTempModSet(TArray ModIds)\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-39",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"mod-management-enabled"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"temp-mod-set-initialized"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-60",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModIds"})}),(0,i.jsxs)(d.td,{children:["TArray of ",(0,i.jsx)(d.code,{children:"ModioModID"}),"s to install as temp mods"]})]})]})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-13",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["Error code indicating the status of the ",(0,i.jsx)(d.code,{children:"TempModSet"}),". Will be empty if it was successful"]}),"\n",(0,i.jsx)(d.h5,{id:"error-values-40",children:"Error Values"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"SDK not initialized"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModManagementDisabled"})}),(0,i.jsx)(d.td,{children:"Mod management not enabled"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TempModSetNotInitialized"})}),(0,i.jsxs)(d.td,{children:[(0,i.jsx)(d.code,{children:"TempModSet"})," not initialized"]})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"is-using-background-thread",children:"Is Using Background Thread"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_IsUsingBackgroundThread.png",src:s(27331).A+"",width:"243",height:"124"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool IsUsingBackgroundThread()\n"})}),"\n",(0,i.jsx)(d.h4,{id:"is-mod-management-busy",children:"Is Mod Management Busy"}),"\n",(0,i.jsx)(d.p,{children:"Checks if the automatic management process is currently installing or removing mods"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_IsModManagementBusy.png",src:s(40309).A+"",width:"231",height:"124"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool IsModManagementBusy()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-61",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-14",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"True if automatic management is currently performing an operation"}),"\n",(0,i.jsx)(d.h4,{id:"get-last-validation-error",children:"Get Last Validation Error"}),"\n",(0,i.jsx)(d.p,{children:"If the last request to the mod.io servers returned a validation failure, this function returns extended information describing the fields that failed validation."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_GetLastValidationError.png",src:s(33590).A+"",width:"227",height:"124"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"TArray GetLastValidationError()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"requirements-40",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,i.jsx)(d.h5,{id:"parameters-62",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.h5,{id:"returns-15",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["Collection of ",(0,i.jsx)(d.code,{children:"ModioValidationError"})," objects, or empty collection if there were no validation failures"]}),"\n",(0,i.jsx)(d.h4,{id:"disable-mod-management",children:"Disable Mod Management"}),"\n",(0,i.jsx)(d.p,{children:"Disables automatic installation or uninstallation of mods based on the user's subscriptions. Allows currently processing installation to complete. Will cancel any pending operations when called."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_DisableModManagement.png",src:s(63754).A+"",width:"231",height:"124"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void DisableModManagement()\n"})}),"\n",(0,i.jsx)(d.h5,{id:"parameters-63",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiouienumlocalizationlibrary",children:"ModioUIEnumLocalizationLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-14",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiouilocalizationlibrary",children:"ModioUILocalizationLibrary"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-15",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64library",children:"ModioUnsigned64Library"}),"\n",(0,i.jsx)(d.h5,{id:"inheritance-hierarchy-16",children:"Inheritance Hierarchy"}),"\n",(0,i.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h2,{id:"structs",children:"Structs"}),"\n",(0,i.jsx)(d.h3,{id:"modiogameinfolist",children:"ModioGameInfoList"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiogameinfo",children:"ModioGameInfo"}),"\n",(0,i.jsx)(d.h5,{id:"variables",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioGameID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameID"})}),(0,i.jsx)(d.td,{children:"Unique Game ID"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FDateTime"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DateAdded"})}),(0,i.jsx)(d.td,{children:"Unix timestamp of date the game was registered"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FDateTime"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DateUpdated"})}),(0,i.jsx)(d.td,{children:"Unix timestamp of date the game was updated"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FDateTime"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DateLive"})}),(0,i.jsx)(d.td,{children:"Unix timestamp of date the game was set live"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UgcName"})}),(0,i.jsx)(d.td,{children:"Word used to describe user-generated content (mods, items, add-ons etc)"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioIcon"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Icon"})}),(0,i.jsx)(d.td,{children:"Contains media URLs to the icon for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioLogo"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Logo"})}),(0,i.jsx)(d.td,{children:"Contains media URLs to the logo for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioHeaderImage"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"HeaderImage"})}),(0,i.jsx)(d.td,{children:"Contains media URLs to the preview header image for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Name"})}),(0,i.jsx)(d.td,{children:"Name of the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Summary"})}),(0,i.jsx)(d.td,{children:"Summary of the game's mod support"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Instructions"})}),(0,i.jsx)(d.td,{children:"A guide about creating and uploading mods for this game to mod.io"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InstructionsUrl"})}),(0,i.jsx)(d.td,{children:"Link to a mod.io guide, modding wiki, or a page where modders can learn how to make and submit mods to this game's profile"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileUrl"})}),(0,i.jsx)(d.td,{children:"URL to the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioTheme"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Theme"})}),(0,i.jsx)(d.td,{children:"Theme color values for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioGameStats"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Stats"})}),(0,i.jsx)(d.td,{children:"Numerous aggregate stats for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"OtherUrls"})}),(0,i.jsx)(d.td,{children:"Creator defined URLs to share"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Platforms"})}),(0,i.jsx)(d.td,{children:"Platforms that are supported by this title"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bAllowNegativeRatings"})}),(0,i.jsx)(d.td,{children:"Whether or not the game allows negative ratings"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EGameMonetizationFlags"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameMonetizationOptions"})}),(0,i.jsx)(d.td,{children:"Monetization options for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EGameMaturityFlags"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameMaturityOptions"})}),(0,i.jsx)(d.td,{children:"Maturity options for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"VirtualTokenName"})}),(0,i.jsx)(d.td,{children:"Name of the Virtual Tokens for this game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PlatformSupport"})}),(0,i.jsx)(d.td,{children:"Platforms that are supported by this title"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TagOptions"})}),(0,i.jsx)(d.td,{children:"Tags available for this game"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodtaginfo",children:"ModioModTagInfo"}),"\n",(0,i.jsx)(d.h5,{id:"variables-1",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TagGroupName"})}),(0,i.jsx)(d.td,{children:"Raw unlocalized tag group name"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TagGroupValues"})}),(0,i.jsx)(d.td,{children:"Valid raw unlocalized tag values this group contains"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TMap"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TagGroupNameLocalizationData"})}),(0,i.jsx)(d.td,{children:"Culture code -> localized tag category name mapping for all configured languages"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TagGroupValueLocalizationData"})}),(0,i.jsx)(d.td,{children:"Localization data for this tag category's values in all configured languages"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bAllowMultipleSelection"})}),(0,i.jsx)(d.td,{children:"True if multiple tags from the group can be used simultaneously"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bHidden"})}),(0,i.jsx)(d.td,{children:"True if only visible by admins"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bLocked"})}),(0,i.jsx)(d.td,{children:"TrueTrue if only editable by admins"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiolocalizedtagcategory",children:"ModioLocalizedTagCategory"}),"\n",(0,i.jsx)(d.p,{children:"Struct containing pre-localized display strings for a tag group"}),"\n",(0,i.jsx)(d.h5,{id:"variables-2",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GroupName"})}),(0,i.jsx)(d.td,{children:"Localized display string for this tag category's name"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Tags"})}),(0,i.jsx)(d.td,{children:"Localized display strings for all valid values in this tag category"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodtaglocalizationdata",children:"ModioModTagLocalizationData"}),"\n",(0,i.jsx)(d.p,{children:"Localization data for an individual tag value"}),"\n",(0,i.jsx)(d.h5,{id:"variables-3",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Tag"})}),(0,i.jsx)(d.td,{children:"The original raw unlocalized tag value used by the REST API"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TMap"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Translations"})}),(0,i.jsx)(d.td,{children:"Culture code -> Localized tag value string mapping for all configured languages."})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiogameplatform",children:"ModioGamePlatform"}),"\n",(0,i.jsx)(d.h5,{id:"variables-4",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioModfilePlatform"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Platform"})}),(0,i.jsx)(d.td,{children:"A platform supported by a title"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Locked"})}),(0,i.jsx)(d.td,{children:"Whether ot not this platform is locked from having files submitted to it by players"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Moderated"})}),(0,i.jsx)(d.td,{children:"Whether or not this platform's file submissions are moderated or not"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiootherurl",children:"ModioOtherUrl"}),"\n",(0,i.jsx)(d.h5,{id:"variables-5",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Label"})}),(0,i.jsx)(d.td,{children:"Label of the link you are sharing"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Url"})}),(0,i.jsx)(d.td,{children:"The URL to be associated with the label"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiogamestats",children:"ModioGameStats"}),"\n",(0,i.jsx)(d.p,{children:"Numerous aggregate stats for the game"}),"\n",(0,i.jsx)(d.h5,{id:"variables-6",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioGameID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameID"})}),(0,i.jsx)(d.td,{children:"Unique game id"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModCountTotal"})}),(0,i.jsx)(d.td,{children:"Available mod count for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModDownloadsToday"})}),(0,i.jsx)(d.td,{children:"Mods downloaded today for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModDownloadsTotal"})}),(0,i.jsx)(d.td,{children:"Total mods downloaded for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModDownloadsDailyAverage"})}),(0,i.jsx)(d.td,{children:"Average mods downloaded on a daily basis"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModSubscribersTotal"})}),(0,i.jsx)(d.td,{children:"Number of total users who have subscribed to the mods for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DateExpires"})}),(0,i.jsx)(d.td,{children:"Unix timestamp until this game's statistics are considered stale"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiogameid",children:"ModioGameID"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiotheme",children:"ModioTheme"}),"\n",(0,i.jsx)(d.h5,{id:"variables-7",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Primary"})}),(0,i.jsx)(d.td,{children:"The primary hex color code"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Dark"})}),(0,i.jsx)(d.td,{children:"The dark hex color code"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Light"})}),(0,i.jsx)(d.td,{children:"The light hex color code"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Success"})}),(0,i.jsx)(d.td,{children:"The success hex color code"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Warning"})}),(0,i.jsx)(d.td,{children:"The warning hex color code"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Danger"})}),(0,i.jsx)(d.td,{children:"The danger hex color code"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioheaderimage",children:"ModioHeaderImage"}),"\n",(0,i.jsx)(d.h5,{id:"variables-8",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Filename"})}),(0,i.jsx)(d.td,{children:"Header image filename including extension"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Original"})}),(0,i.jsx)(d.td,{children:"URL to the full-sized header image"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiologo",children:"ModioLogo"}),"\n",(0,i.jsx)(d.h5,{id:"variables-9",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Filename"})}),(0,i.jsx)(d.td,{children:"Logo filename including extension."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Original"})}),(0,i.jsx)(d.td,{children:"URL to the full - sized logo."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb320x180"})}),(0,i.jsx)(d.td,{children:"URL to the small logo thumbnail."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb640x360"})}),(0,i.jsx)(d.td,{children:"URL to the medium logo thumbnail."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb1280x720"})}),(0,i.jsx)(d.td,{children:"URL to the large logo thumbnail."})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioicon",children:"ModioIcon"}),"\n",(0,i.jsx)(d.h5,{id:"variables-10",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Filename"})}),(0,i.jsx)(d.td,{children:"Icon filename including extension."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Original"})}),(0,i.jsx)(d.td,{children:"URL to the full-sized icon."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb64x64"})}),(0,i.jsx)(d.td,{children:"URL to the small icon thumbnail."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb128x128"})}),(0,i.jsx)(d.td,{children:"URL to the medium icon thumbnail."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb256x256"})}),(0,i.jsx)(d.td,{children:"URL to the large icon thumbnail."})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiopagedresult",children:"ModioPagedResult"}),"\n",(0,i.jsx)(d.h5,{id:"variables-11",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int32"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PageIndex"})}),(0,i.jsx)(d.td,{children:"The index of this page"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int32"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PageSize"})}),(0,i.jsx)(d.td,{children:"The amount of results allowed to be displayed within a page"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int32"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PageCount"})}),(0,i.jsx)(d.td,{children:"The total amount of pages"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int32"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TotalResultCount"})}),(0,i.jsx)(d.td,{children:"The total amount of results"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int32"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ResultCount"})}),(0,i.jsx)(d.td,{children:"The amount of results for this page"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodinfolist",children:"ModioModInfoList"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodinfo",children:"ModioModInfo"}),"\n",(0,i.jsx)(d.h5,{id:"variables-12",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioModID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModId"})}),(0,i.jsx)(d.td,{children:"Unique Mod ID"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileName"})}),(0,i.jsx)(d.td,{children:"Name of the mod"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileSummary"})}),(0,i.jsx)(d.td,{children:"Summary of the mod"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileDescription"})}),(0,i.jsx)(d.td,{children:"Detailed description in HTML format"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileDescriptionPlaintext"})}),(0,i.jsx)(d.td,{children:"Detailed description in plaintext"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileURL"})}),(0,i.jsx)(d.td,{children:"URL to the mod profile"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioUser"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileSubmittedBy"})}),(0,i.jsx)(d.td,{children:"Information on the user who submitted the mod"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FDateTime"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileDateAdded"})}),(0,i.jsx)(d.td,{children:"Unix timestamp of the date the mod was registered"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FDateTime"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileDateUpdated"})}),(0,i.jsx)(d.td,{children:"Unix timestamp of the date the mod was updated"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FDateTime"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileDateLive"})}),(0,i.jsx)(d.td,{children:"Unix timestamp of the date the mod was marked live"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioMaturityFlags"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileMaturityOption"})}),(0,i.jsx)(d.td,{children:"Flags for maturity options. Maturity options are flagged by the mod developer. This is only relevant if the parent game allows mods to be labeled as mature."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.del,{children:(0,i.jsx)(d.code,{children:"bVisible_DEPRECATED"})})}),(0,i.jsxs)(d.td,{children:["Deprecated as of 2023.6 release. Please use ",(0,i.jsx)(d.code,{children:"EModioObjectVisibilityFlags Visibility"})," instead."]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioObjectVisibilityFlags"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Visibility"})}),(0,i.jsx)(d.td,{children:"Enum parameter to signal the backend if the mod to upload would be publicly visible. Default value is Public"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Dependencies"})}),(0,i.jsx)(d.td,{children:"If this mod has any dependencies"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MetadataBlob"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioFileMetadata"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FileInfo"})}),(0,i.jsx)(d.td,{children:"Information about the mod's most recent public release"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MetadataKvp"})}),(0,i.jsx)(d.td,{children:"Arbitrary key-value metadata set for this mod"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Tags"})}),(0,i.jsx)(d.td,{children:"Tags this mod has set"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int32"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NumGalleryImages"})}),(0,i.jsx)(d.td,{children:"Number of images in the mod's media gallery"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioYoutubeURLList"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"YoutubeURLs"})}),(0,i.jsx)(d.td,{children:"List of youtube links provided by the creator of the mod"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioSketchfabURLList"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SketchfabURLs"})}),(0,i.jsx)(d.td,{children:"List of sketchfab links provided by the creator of the mod"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioModStats"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Stats"})}),(0,i.jsx)(d.td,{children:"Stats and rating information for the mod"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioModServerSideStatus"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModStatus"})}),(0,i.jsx)(d.td,{children:"Status of the mod"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioUnsigned64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Price"})}),(0,i.jsx)(d.td,{children:"Price of this mod"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64",children:"ModioUnsigned64"}),"\n",(0,i.jsx)(d.p,{children:"Trivial Blueprint-compatible wrapper around an unsigned 64-bit integer"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodstats",children:"ModioModStats"}),"\n",(0,i.jsx)(d.p,{children:"Contains download stats and ratings for a mod"}),"\n",(0,i.jsx)(d.h5,{id:"variables-13",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PopularityRankPosition"})}),(0,i.jsx)(d.td,{children:"Current rank of the mod."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PopularityRankTotalMods"})}),(0,i.jsx)(d.td,{children:"Number of ranking spots the current rank is measured against."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DownloadsTotal"})}),(0,i.jsx)(d.td,{children:"Number of total mod downloads."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SubscribersTotal"})}),(0,i.jsx)(d.td,{children:"Number of total users who have subscribed to the mod."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RatingTotal"})}),(0,i.jsx)(d.td,{children:"Number of times this mod has been rated."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RatingPositive"})}),(0,i.jsx)(d.td,{children:"Number of positive ratings."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RatingNegative"})}),(0,i.jsx)(d.td,{children:"Number of negative ratings."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RatingPercentagePositive"})}),(0,i.jsx)(d.td,{children:"Number of positive ratings, divided by the total ratings to determine it\u2019s percentage score."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"float"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RatingWeightedAggregate"})}),(0,i.jsxs)(d.td,{children:["Overall rating of this item calculated using the ",(0,i.jsx)(d.a,{href:"https://www.evanmiller.org/how-not-to-sort-by-average-Ratinghtml",children:"Wilson score confidence interval"}),". This column is good to sort on, as it will order items based on number of ratings and will place items with many positive ratings above those with a higher score but fewer ratings. We actually get a double back from the server, but it's converted to a float for blueprint support"]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RatingDisplayText"})}),(0,i.jsx)(d.td,{children:"Textual representation of the rating in format: Overwhelmingly Positive -> Very Positive -> Positive -> Mostly Positive -> Mixed -> Negative -> Mostly Negative -> Very Negative -> Overwhelmingly Negative -> Unrated"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiosketchfaburllist",children:"ModioSketchfabURLList"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioyoutubeurllist",children:"ModioYoutubeURLList"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodtag",children:"ModioModTag"}),"\n",(0,i.jsx)(d.h5,{id:"variables-14",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Tag"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FText"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TagLocalized"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiometadata",children:"ModioMetadata"}),"\n",(0,i.jsx)(d.h5,{id:"variables-15",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Key"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Value"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiofilemetadata",children:"ModioFileMetadata"}),"\n",(0,i.jsx)(d.p,{children:"Metadata for a release archive for a mod"}),"\n",(0,i.jsx)(d.h5,{id:"variables-16",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioFileMetadataID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MetadataId"})}),(0,i.jsx)(d.td,{children:"Unique modfile id."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioModID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModId"})}),(0,i.jsx)(d.td,{children:"Unique mod id."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FDateTime"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DateAdded"})}),(0,i.jsx)(d.td,{children:"Unix timestamp of date file was added."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioVirusScanStatus"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"CurrentVirusScanStatus"})}),(0,i.jsx)(d.td,{children:"Current virus scan status of the file. For newly added files that have yet to be scanned this field will change frequently until a scan is complete"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioVirusStatus"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"CurrentVirusStatus"})}),(0,i.jsx)(d.td,{children:"Was a virus detected?"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Filesize"})}),(0,i.jsx)(d.td,{children:"Size of the file in bytes."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FilesizeUncompressed"})}),(0,i.jsx)(d.td,{children:"Total size of all files in the mod after installation."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Filename"})}),(0,i.jsx)(d.td,{children:"Filename including extension."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Version"})}),(0,i.jsx)(d.td,{children:"Release version this file represents."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Changelog"})}),(0,i.jsx)(d.td,{children:"Changelog for the file."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MetadataBlob"})}),(0,i.jsx)(d.td,{children:"Metadata stored by the game developer for this file."})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodid",children:"ModioModID"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiofilemetadataid",children:"ModioFileMetadataID"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiouser",children:"ModioUser"}),"\n",(0,i.jsx)(d.h5,{id:"variables-17",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioUserID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserId"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Username"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FDateTime"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DateOnline"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ProfileUrl"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DisplayNamePortal"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiouserid",children:"ModioUserID"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodtagoptions",children:"ModioModTagOptions"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioerrorcode",children:"ModioErrorCode"}),"\n",(0,i.jsxs)(d.p,{children:["Wrapper around ",(0,i.jsx)(d.code,{children:"Modio::ErrorCode"})]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalgameinfo",children:"ModioOptionalGameInfo"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalimage",children:"ModioOptionalImage"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalmoddependencylist",children:"ModioOptionalModDependencyList"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalmodinfo",children:"ModioOptionalModInfo"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalmodtagoptions",children:"ModioOptionalModTagOptions"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalterms",children:"ModioOptionalTerms"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionaluint64",children:"ModioOptionalUInt64"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalmodinfolist",children:"ModioOptionalModInfoList"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalgameinfolist",children:"ModioOptionalGameInfoList"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodmanagementevent",children:"ModioModManagementEvent"}),"\n",(0,i.jsx)(d.p,{children:"Simple struct representing the outcome of a mod management operation"}),"\n",(0,i.jsx)(d.h5,{id:"variables-18",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioModID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ID"})}),(0,i.jsx)(d.td,{children:"ID for the mod that the event occurred on"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioModManagementEventType"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Event"})}),(0,i.jsx)(d.td,{children:"What type of event occurred"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioErrorCode"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Status"})}),(0,i.jsx)(d.td,{children:"Empty if operation completed successfully, truthy/contains error code if operation failed"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionaluserlist",children:"ModioOptionalUserList"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalmodchangemap",children:"ModioOptionalModChangeMap"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionaltransactionrecord",children:"ModioOptionalTransactionRecord"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalentitlementconsumptionstatuslist",children:"ModioOptionalEntitlementConsumptionStatusList"}),"\n",(0,i.jsx)(d.p,{children:"Optional class representing a list of entitlement consumption statuses that may be a page from a larger set of results"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalmodid",children:"ModioOptionalModID"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioauthenticationparams",children:"ModioAuthenticationParams"}),"\n",(0,i.jsx)(d.p,{children:"Simple struct to encapsulate data passed to external authentication systems"}),"\n",(0,i.jsx)(d.h5,{id:"variables-19",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"AuthToken"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserEmail"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bUserHasAcceptedTerms"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TMap"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ExtendedParameters"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioapikey",children:"ModioApiKey"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioguid",children:"ModioGuid"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalguid",children:"ModioOptionalGuid"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioemailaddress",children:"ModioEmailAddress"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioemailauthcode",children:"ModioEmailAuthCode"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioentitlementparams",children:"ModioEntitlementParams"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiometricssessionparams",children:"ModioMetricsSessionParams"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiocreatemodfileparams",children:"ModioCreateModFileParams"}),"\n",(0,i.jsx)(d.h5,{id:"variables-20",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PathToModRootDirectory"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiocreatemodparams",children:"ModioCreateModParams"}),"\n",(0,i.jsx)(d.h5,{id:"variables-21",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PathToLogoFile"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Name"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Summary"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioeditmodparams",children:"ModioEditModParams"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioentitlementwalletbalance",children:"ModioEntitlementWalletBalance"}),"\n",(0,i.jsx)(d.p,{children:"Updated wallet balance from the sync entitlements call"}),"\n",(0,i.jsx)(d.h5,{id:"variables-22",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioUnsigned64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Balance"})}),(0,i.jsx)(d.td,{children:"The updated balance of the wallet"})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalentitlementwalletbalance",children:"ModioOptionalEntitlementWalletBalance"}),"\n",(0,i.jsx)(d.p,{children:"Optional updated wallet balance from the sync entitlements call"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioentitlementconsumptionvirtualcurrencydetails",children:"ModioEntitlementConsumptionVirtualCurrencyDetails"}),"\n",(0,i.jsx)(d.p,{children:"Further details about a Virtual Currency entitlement that was consumed"}),"\n",(0,i.jsx)(d.h5,{id:"variables-23",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int32"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TokensAllocated"})}),(0,i.jsx)(d.td,{children:"Amount of tokens that were issued for this specific entitlement consumption"})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"entitlementconsumptionstatus",children:"EntitlementConsumptionStatus"}),"\n",(0,i.jsx)(d.p,{children:"The result of an entitlement's consumption"}),"\n",(0,i.jsx)(d.h5,{id:"variables-24",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TransactionId"})}),(0,i.jsx)(d.td,{children:"ID of the transaction to redeem this entitlement"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioEntitlementConsumptionState"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TransactionState"})}),(0,i.jsx)(d.td,{children:"State of the transaction"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SkuId"})}),(0,i.jsx)(d.td,{children:"ID of the SKU that we attempted to consume"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntitlementConsumed"})}),(0,i.jsx)(d.td,{children:"Whether this entitlement was consumed or not"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioEntitlementType"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntitlementType"})}),(0,i.jsx)(d.td,{children:"Type of Entitlement that was consumed"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioEntitlementConsumptionVirtualCurrencyDetails"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"VirtualCurrencyDetails"})}),(0,i.jsx)(d.td,{children:"Details about virtual currency entitlement consumption"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioentitlementconsumptionstatuslist",children:"ModioEntitlementConsumptionStatusList"}),"\n",(0,i.jsx)(d.p,{children:"Class representing a list of entitlement consumption statuses that may be a page from a larger set of results"}),"\n",(0,i.jsx)(d.h5,{id:"variables-25",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioPagedResult"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PagedResult"})}),(0,i.jsx)(d.td,{children:"Stored property for a paged result, which provides context on the entitlement consumption status list"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InternalList"})}),(0,i.jsx)(d.td,{children:"Stored property for the dependency list"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioOptionalEntitlementWalletBalance"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"WalletBalance"})}),(0,i.jsx)(d.td,{children:"Updated wallet balance from syncing entitlements"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiofilterparams",children:"ModioFilterParams"}),"\n",(0,i.jsxs)(d.p,{children:["Class storing a set of filter parameters for use in ",(0,i.jsx)(d.a,{href:"#listallmodsasync",children:(0,i.jsx)(d.code,{children:"ListAllModsAsync"})})]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiopresetfilterparams",children:"ModioPresetFilterParams"}),"\n",(0,i.jsx)(d.h5,{id:"variables-26",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FText"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PresetName"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Tags"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ExcludedTags"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioSortDirection"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Direction"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioSortFieldType"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SortField"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Count"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioimagewrapper",children:"ModioImageWrapper"}),"\n",(0,i.jsx)(d.h5,{id:"variables-27",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ImagePath"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioinitializeoptions",children:"ModioInitializeOptions"}),"\n",(0,i.jsx)(d.h5,{id:"variables-28",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioGameID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameId"})}),(0,i.jsx)(d.td,{children:"The mod.io-provided ID for the game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioApiKey"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ApiKey"})}),(0,i.jsx)(d.td,{children:"The mod.io-provided API key for your application or game"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioEnvironment"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameEnvironment"})}),(0,i.jsx)(d.td,{children:"The mod.io environment you want to run the SDK on"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioPortal"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PortalInUse"})}),(0,i.jsx)(d.td,{children:"The portal your title is running through"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TMap"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ExtendedInitializationParameters"})}),(0,i.jsx)(d.td,{children:"Extended platform-specific initialization parameters. Refer to the platform documentation for valid keys and their values. Unrecognized values will be ignored"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bUseBackgroundThread"})}),(0,i.jsx)(d.td,{children:"Set mod.io to run with background thread"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodchangemap",children:"ModioModChangeMap"}),"\n",(0,i.jsx)(d.h5,{id:"variables-29",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TMap"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Changes"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodcollectionentry",children:"ModioModCollectionEntry"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodcreationhandle",children:"ModioModCreationHandle"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomoddependency",children:"ModioModDependency"}),"\n",(0,i.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,i.jsx)(d.p,{children:"This class is part of an experimental feature and is subject to change."})}),"\n",(0,i.jsx)(d.h5,{id:"variables-30",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioModID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModID"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModName"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FDateTime"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DateAdded"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FDateTime"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DateUpdated"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"uint8"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DependencyDepth"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioLogo"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Logo"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioFileMetadata"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FileInfo"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioModServerSideStatus"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Status"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EModioObjectVisibilityFlags"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Visibility"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomoddependencylist",children:"ModioModDependencyList"}),"\n",(0,i.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,i.jsx)(d.p,{children:"This class is part of an experimental feature and is subject to change."})}),"\n",(0,i.jsx)(d.h5,{id:"variables-31",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioPagedResult"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PagedResult"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InternalList"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TotalFilesize"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"int64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TotalFilesizeUncompressed"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodprogressinfo",children:"ModioModProgressInfo"}),"\n",(0,i.jsx)(d.h5,{id:"variables-32",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioModID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ID"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionalmodprogressinfo",children:"ModioOptionalModProgressInfo"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioreportparams",children:"ModioReportParams"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiolink",children:"ModioLink"}),"\n",(0,i.jsx)(d.h5,{id:"variables-33",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Text"})}),(0,i.jsx)(d.td,{children:"The user-facing text for the link"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"URL"})}),(0,i.jsx)(d.td,{children:"The actual URL for the link"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bool"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bRequired"})}),(0,i.jsx)(d.td,{children:"Is displaying this link mandatory?"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modioterms",children:"ModioTerms"}),"\n",(0,i.jsx)(d.h5,{id:"variables-34",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"AgreeButtonText"})}),(0,i.jsx)(d.td,{children:"Text to display on the affirmative/OK button"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DisagreeButtonText"})}),(0,i.jsx)(d.td,{children:"Text to display on the negative/cancel button"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioLink"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"WebsiteLink"})}),(0,i.jsx)(d.td,{children:"Link to the mod.io website"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioLink"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TermsLink"})}),(0,i.jsx)(d.td,{children:"Link to the mod.io terms of use"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioLink"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PrivacyLink"})}),(0,i.jsx)(d.td,{children:"Link to the mod.io Privacy Policy"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioLink"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ManageLink"})}),(0,i.jsx)(d.td,{children:"Link to the mod.io Manage User Account page"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TermsText"})}),(0,i.jsx)(d.td,{children:"The plaintext version of the mod.io terms of use"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiotransactionrecord",children:"ModioTransactionRecord"}),"\n",(0,i.jsx)(d.h5,{id:"variables-35",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioModID"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"AssociatedModID"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioUnsigned64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Price"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioUnsigned64"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UpdatedUserWalletBalance"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiooptionaluser",children:"ModioOptionalUser"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiouserlist",children:"ModioUserList"}),"\n",(0,i.jsx)(d.h5,{id:"variables-36",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FModioPagedResult"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PagedResult"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InternalList"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiovalidationerror",children:"ModioValidationError"}),"\n",(0,i.jsx)(d.p,{children:"Wrapper struct containing information about a field validation error"}),"\n",(0,i.jsx)(d.h5,{id:"variables-37",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FieldName"})}),(0,i.jsx)(d.td,{children:"String description of the field that failed validation"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FString"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ValidationFailureDescription"})}),(0,i.jsx)(d.td,{children:"String description of the validation failure"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiocreatemodfilememoryparams",children:"ModioCreateModFileMemoryParams"}),"\n",(0,i.jsx)(d.h5,{id:"variables-38",children:"Variables"}),"\n",(0,i.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TArray"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModMemory"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h2,{id:"functions",children:"Functions"}),"\n",(0,i.jsx)(d.h3,{id:"set-session-identifier",children:"Set Session Identifier"}),"\n",(0,i.jsxs)(d.p,{children:["Changes the session identifier for the provided set of ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetSessionIdentifier.png",src:s(92464).A+"",width:"297",height:"111"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetSessionIdentifier(FModioInitializeOptions Options, FString SessionIdentifier)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-64",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Options"})}),(0,i.jsxs)(d.td,{children:["The template ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SessionIdentifier"})}),(0,i.jsx)(d.td,{children:"The new session id to use"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-16",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["New ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the session identifier set to the desired value"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-session-id",children:"Set Session Id"}),"\n",(0,i.jsx)(d.p,{children:"Changes the session identifier for the provided Metrics Session parameters"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetSessionId.png",src:s(81294).A+"",width:"224",height:"106"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioMetricsSessionParams SetSessionId(FModioMetricsSessionParams Params, FModioGuid Id)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-65",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Params"})}),(0,i.jsx)(d.td,{children:"The template Metrics Session parameters"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Id"})}),(0,i.jsx)(d.td,{children:"The intended Guid to store in the Metrics Session parameters"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-portal",children:"Set Portal"}),"\n",(0,i.jsxs)(d.p,{children:["Changes the portal for the provided set of ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetPortal.png",src:s(80807).A+"",width:"379",height:"134"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetPortal(FModioInitializeOptions Options, EModioPortal PortalToUse)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-66",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Options"})}),(0,i.jsxs)(d.td,{children:["The template ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PortalToUse"})}),(0,i.jsx)(d.td,{children:"The new portal to use"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-17",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["New ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the portal set to the desired value"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-game-id",children:"Set Game Id"}),"\n",(0,i.jsxs)(d.p,{children:["Changes the game id for the provided set of ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetGameId.png",src:s(12376).A+"",width:"249",height:"111"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetGameId(FModioInitializeOptions Options, int64 GameId)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-67",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Options"})}),(0,i.jsxs)(d.td,{children:["The template ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameId"})}),(0,i.jsx)(d.td,{children:"The new game id to use"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-18",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["New ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the game id set to the desired value"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-game-environment",children:"Set Game Environment"}),"\n",(0,i.jsxs)(d.p,{children:["Changes the game environment for the provided set of ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetGameEnvironment.png",src:s(39644).A+"",width:"379",height:"134"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetGameEnvironment(FModioInitializeOptions Options, EModioEnvironment GameEnvironment)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-68",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Options"})}),(0,i.jsxs)(d.td,{children:["The template ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameEnvironment"})}),(0,i.jsx)(d.td,{children:"The new environment to use"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-19",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["New ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the game environment set to the desired value"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-extended-initialization-parameters",children:"Set Extended Initialization Parameters"}),"\n",(0,i.jsxs)(d.p,{children:["Sets extended initialization parameters for the provided set of ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetExtendedInitializationParameters.png",src:s(92606).A+"",width:"304",height:"108"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetExtendedInitializationParameters(FModioInitializeOptions Options, TMap ExtendedParameters)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-69",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Options"})}),(0,i.jsxs)(d.td,{children:["The template ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ExtendedParameters"})}),(0,i.jsx)(d.td,{children:"The new extended parameters to use (will overwrite existing values)"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-20",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["New ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the extended parameters set to the desired value"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-api-key",children:"Set API Key"}),"\n",(0,i.jsxs)(d.p,{children:["Changes the API key for the provided set of ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetAPIKey.png",src:s(70504).A+"",width:"244",height:"111"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetAPIKey(FModioInitializeOptions Options, FString APIKey)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-70",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Options"})}),(0,i.jsxs)(d.td,{children:["The template ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"APIKey"})}),(0,i.jsx)(d.td,{children:"The new API key to use"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-21",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["New ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the API key set to the desired value"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodid--modiomodid",children:"ModioModID != ModioModID"}),"\n",(0,i.jsx)(d.p,{children:"Compares two mod IDs to check whether they're not equal"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_NotEqualTo.png",src:s(68979).A+"",width:"159",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool NotEqualTo(FModioModID A, FModioModID B)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-71",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"A"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"B"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"make-metrics-session-params",children:"Make Metrics Session Params"}),"\n",(0,i.jsx)(d.p,{children:"Create Metrics Session parameters"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeMetricsSessionParams.png",src:s(59800).A+"",width:"258",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioMetricsSessionParams MakeMetricsSessionParams(TArray Ids)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-72",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Ids"})}),(0,i.jsx)(d.td,{children:"The list of mods to store within the Metrics Session parameters"})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"make-initialize-options",children:"Make Initialize Options"}),"\n",(0,i.jsxs)(d.p,{children:["Make ",(0,i.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,i.jsx)(d.code,{children:"ModioInitializeOptions"})}),". Should only be used in conjunction with ",(0,i.jsx)(d.a,{href:"#initializeasync",children:(0,i.jsx)(d.code,{children:"InitializeAsync"})}),"."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeInitializeOptions.png",src:s(61327).A+"",width:"379",height:"232"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions MakeInitializeOptions(int64 GameId, FString APIKey, EModioEnvironment GameEnvironment, EModioPortal PortalInUse)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-73",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameId"})}),(0,i.jsxs)(d.td,{children:["A positive integer that maps to your game. This can be found in the admin section of your game's page at ",(0,i.jsx)(d.a,{href:"https://mod.io/",children:"https://mod.io/"})]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"APIKey"})}),(0,i.jsxs)(d.td,{children:["The API key for your game. This can be found in the admin section of your game's page at ",(0,i.jsx)(d.a,{href:"https://mod.io/",children:"https://mod.io/"})]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameEnvironment"})}),(0,i.jsx)(d.td,{children:"The environment your game has been set up on: test or live."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PortalInUse"})}),(0,i.jsxs)(d.td,{children:["The ",(0,i.jsx)(d.a,{href:"#EModioPortal",children:(0,i.jsx)(d.code,{children:"EModioPortal"})})," representing the store or service your game is being distributed through. Defaults to ",(0,i.jsx)(d.code,{children:"EModioPortal::None"}),"."]})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"make-guid",children:"Make Guid"}),"\n",(0,i.jsx)(d.p,{children:"Create a Guid from a string"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeGuid.png",src:s(11520).A+"",width:"230",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioGuid MakeGuid(FString Guid)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-74",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Guid"})}),(0,i.jsx)(d.td,{children:"A string to wrap within a Guid struct"})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"make-game-id",children:"Make Game Id"}),"\n",(0,i.jsxs)(d.p,{children:["Create a game id from a integer. Should only be used in conjunction with ",(0,i.jsx)(d.a,{href:"#initializeasync",children:(0,i.jsx)(d.code,{children:"InitializeAsync"})})]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeGameId.png",src:s(18778).A+"",width:"249",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioGameID MakeGameId(int64 GameId)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-75",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameId"})}),(0,i.jsx)(d.td,{children:"A positive integer that maps to your game"})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"make-entitlement-params",children:"Make Entitlement Params"}),"\n",(0,i.jsx)(d.p,{children:"Create entitlement parameters"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeEntitlementParams.png",src:s(4568).A+"",width:"303",height:"78"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioEntitlementParams MakeEntitlementParams(TMap ExtendedParameters)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-76",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ExtendedParameters"})}),(0,i.jsx)(d.td,{children:"A map to store extended parameters required by some portals"})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"make-auth-params",children:"Make Auth Params"}),"\n",(0,i.jsxs)(d.p,{children:["Creates a ",(0,i.jsx)(d.code,{children:"ModioAuthenticationParams"})," object"]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeAuthParams.png",src:s(11595).A+"",width:"306",height:"150"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioAuthenticationParams MakeAuthParams(FString AuthToken, FString EmailAddress, bool bHasAcceptedTOS)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-77",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"AuthToken"})}),(0,i.jsx)(d.td,{children:"Authentication provider-supplied OAuth token"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EmailAddress"})}),(0,i.jsx)(d.td,{children:"User email address, can be left blank"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bHasAcceptedTOS"})}),(0,i.jsx)(d.td,{children:"Has the user been shown the Terms of Service and accepted the Terms of Service?"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-22",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["The constructed ",(0,i.jsx)(d.code,{children:"ModioAuthenticationParams"})," object for use with ",(0,i.jsx)(d.a,{href:"#authenticateuserexternalasync",children:(0,i.jsx)(d.code,{children:"AuthenticateUserExternalAsync"})})]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"make-api-key",children:"Make Api Key"}),"\n",(0,i.jsxs)(d.p,{children:["Create an ApiKey id from a string. Should only be used in conjunction with ",(0,i.jsx)(d.a,{href:"#initializeasync",children:(0,i.jsx)(d.code,{children:"InitializeAsync"})})]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeApiKey.png",src:s(4650).A+"",width:"246",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioApiKey MakeApiKey(FString ApiKey)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-78",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ApiKey"})}),(0,i.jsx)(d.td,{children:"The api key from your settings panel on mod.io"})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-raw-value-from-mod-id",children:"Get Raw Value from Mod ID"}),"\n",(0,i.jsxs)(d.p,{children:["Retrieves the raw underlying value from an ",(0,i.jsx)(d.code,{children:"ModioModID"}),". ",(0,i.jsx)(d.code,{children:"ModioModID"}),"s are intended as opaque types, so use with care."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_GetRawValueFromModID.png",src:s(89913).A+"",width:"240",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"int64 GetRawValueFromModID(FModioModID In)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-79",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"In"})}),(0,i.jsxs)(d.td,{children:["The ",(0,i.jsx)(d.code,{children:"ModioModID"})," to retrieve the value for"]})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-23",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"The underlying value"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiomodid--modiomodid-1",children:"ModioModID == ModioModID"}),"\n",(0,i.jsx)(d.p,{children:"Compares two mod IDs to check whether they're equal"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_EqualTo.png",src:s(47438).A+"",width:"159",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool EqualTo(FModioModID A, FModioModID B)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-80",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"A"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"B"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-version-string",children:"Set Version String"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetVersionString.png",src:s(99860).A+"",width:"186",height:"143"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetVersionString(FModioCreateModFileParams In, FString Version)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-tags",children:"Set Tags"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetTags.png",src:s(35536).A+"",width:"137",height:"138"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetTags(FModioCreateModParams In, TArray Tags)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-modfile-platforms",children:"Set Modfile Platforms"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetModfilePlatforms.png",src:s(34393).A+"",width:"208",height:"138"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetModfilePlatforms(FModioCreateModFileParams In, TArray Platforms)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-mod-file-metadata-blob",children:"Set Mod File Metadata Blob"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetModFileMetadataBlob.png",src:s(37723).A+"",width:"239",height:"143"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetModFileMetadataBlob(FModioCreateModFileParams In, FString MetadataBlob)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-metadata-blob",children:"Set Metadata Blob"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetMetadataBlob.png",src:s(66981).A+"",width:"212",height:"143"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetMetadataBlob(FModioCreateModParams In, FString MetadataBlob)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-mark-as-active-release",children:"Set Mark as Active Release"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetMarkAsActiveRelease.png",src:s(11563).A+"",width:"258",height:"142"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetMarkAsActiveRelease(FModioCreateModFileParams In, bool bMarkAsActiveRelease)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-initial-visibility-deprecated",children:"Set Initial Visibility DEPRECATED"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetInitialVisibility_DEPRECATED.png",src:s(56359).A+"",width:"269",height:"142"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetInitialVisibility_DEPRECATED(FModioCreateModParams In, bool InitialVisibility)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-initial-visibility",children:"Set Initial Visibility"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetInitialVisibility.png",src:s(7163).A+"",width:"306",height:"166"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetInitialVisibility(FModioCreateModParams In, EModioObjectVisibilityFlags InitialVisibility)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-homepage-url",children:"Set Homepage URL"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetHomepageURL.png",src:s(8796).A+"",width:"216",height:"143"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetHomepageURL(FModioCreateModParams In, FString HomepageURL)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-description",children:"Set Description"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetDescription.png",src:s(81069).A+"",width:"193",height:"143"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetDescription(FModioCreateModParams In, FString Description)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"set-changelog-string",children:"Set Changelog String"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetChangelogString.png",src:s(70690).A+"",width:"202",height:"143"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void SetChangelogString(FModioCreateModFileParams In, FString Changelog)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-localized-text-for-enum-by-name",children:"Get Localized Text for Enum by Name"}),"\n",(0,i.jsxs)(d.p,{children:["Returns the string table ",(0,i.jsx)(d.code,{children:"FText"})," for a given enum value's ",(0,i.jsx)(d.code,{children:"FName"}),". Only works with enums registered via ",(0,i.jsx)(d.code,{children:"ModioUI::RegisterEnumAsLocalizable"}),"."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUIEnumLocalizationLibrary_GetLocalizedTextForEnumByName.png",src:s(49443).A+"",width:"298",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FText GetLocalizedTextForEnumByName(FName EnumName)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-81",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EnumName"})}),(0,i.jsx)(d.td,{children:"The Name from a given enum value"})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-24",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"localized Text for the specified enum value, or dummy FText if not found"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"filesizetotext-unsigned64",children:"FileSizeToText (Unsigned64)"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUIEnumLocalizationLibrary_FileSizeUnsigned64_ToText.png",src:s(54294).A+"",width:"441",height:"197"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FText FileSizeUnsigned64_ToText(FModioUnsigned64 FileSize, int32 MinDecimals, int32 MaxDecimals, TEnumAsByte Unit, bool bIncludeUnitName)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-82",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FileSize"})}),(0,i.jsx)(d.td,{children:"Filesize in bytes"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MinDecimals"})}),(0,i.jsx)(d.td,{children:"Minimum number of decimals to display for the filesize"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MaxDecimals"})}),(0,i.jsx)(d.td,{children:"Maximum number of decimals to display for the filesize"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Unit"})}),(0,i.jsxs)(d.td,{children:["If ",(0,i.jsx)(d.code,{children:"Largest"}),", it tries to display the size in the largest unit that will have a integral part > 0, else it displays the filesize in the specified unit"]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bIncludeUnitName"})}),(0,i.jsx)(d.td,{children:"Whether or not to include the unit name"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-25",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["An ",(0,i.jsx)(d.code,{children:"FText"})," formatted with your specifications"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-localized-text-from-default-table-by-key",children:"Get Localized Text from Default Table by Key"}),"\n",(0,i.jsxs)(d.p,{children:["Returns the string table ",(0,i.jsx)(d.code,{children:"FText"})," for a given string key"]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUILocalizationLibrary_GetLocalizedTextFromDefaultTableByKey.png",src:s(6841).A+"",width:"342",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FText GetLocalizedTextFromDefaultTableByKey(FString StringKey)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-83",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"StringKey"})}),(0,i.jsx)(d.td,{children:"The key to look up in the table"})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-26",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["Localized Text for the specified key, or ",(0,i.jsx)(d.code,{children:"StringKey"})," if not found"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"reconstruct-error",children:"Reconstruct Error"}),"\n",(0,i.jsx)(d.p,{children:"Helper method to reconstruct a mod.io error passed via code that cannot reference mod.io types"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioErrorCodeLibrary_ReconstructError.png",src:s(12246).A+"",width:"254",height:"116"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode ReconstructError(int32 Value, int32 Category)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-84",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Value"})}),(0,i.jsx)(d.td,{children:"The numeric value of the code"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Category"})}),(0,i.jsx)(d.td,{children:"The category ID (populated by native code)"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"iserror",children:"IsError"}),"\n",(0,i.jsx)(d.p,{children:"Checks if an error code contains a error"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioErrorCodeLibrary_IsErrorAsExec.png",src:s(30429).A+"",width:"164",height:"110"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool IsErrorAsExec(FModioErrorCode Error)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-85",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Error"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-27",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"true if the error code is an error"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-value",children:"Get Value"}),"\n",(0,i.jsx)(d.p,{children:"Get underlying error code for an FModioErrorCode."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioErrorCodeLibrary_GetValue.png",src:s(70153).A+"",width:"208",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"int32 GetValue(FModioErrorCode Error)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-86",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Error"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-28",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"The underlying error code. 0 represents no error."}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-message",children:"Get Message"}),"\n",(0,i.jsx)(d.p,{children:"Get the textual representation of the error"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioErrorCodeLibrary_GetMessage.png",src:s(6715).A+"",width:"208",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FString GetMessage(FModioErrorCode Error)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-87",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Error"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-29",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["An ",(0,i.jsx)(d.code,{children:"FString"})," message describing the error"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"error-code-matches",children:"Error Code Matches"}),"\n",(0,i.jsx)(d.p,{children:"Checks if the passed-in ErrorCode matches the specified error condition"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioErrorConditionLibrary_ErrorCodeMatches.png",src:s(20798).A+"",width:"379",height:"166"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool ErrorCodeMatches(FModioErrorCode ErrorCode, EModioErrorCondition Condition)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-88",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ErrorCode"})}),(0,i.jsx)(d.td,{children:"The code to check"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Condition"})}),(0,i.jsx)(d.td,{children:"The error condition to check against"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-30",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"True if the code matches the condition"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"list-user-subscription-async",children:"List User Subscription Async"}),"\n",(0,i.jsx)(d.p,{children:"Runs a filter over the user's subscription list"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioExampleLibrary_ListUserSubscriptionAsync.png",src:s(97963).A+"",width:"249",height:"138"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void ListUserSubscriptionAsync(FModioFilterParams FilterParams, FOnListAllModsDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-89",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FilterParams"})}),(0,i.jsx)(d.td,{children:"The filters to use on the user's subscription list"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Called when mod list has been processed"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-logo-thumbnail-size",children:"Get Logo Thumbnail Size"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioExampleLibrary_GetLogoThumbnailSize.png",src:s(49633).A+"",width:"223",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioLogoSize GetLogoThumbnailSize()\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-logo-full-size",children:"Get Logo Full Size"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioExampleLibrary_GetLogoFullSize.png",src:s(57932).A+"",width:"184",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioLogoSize GetLogoFullSize()\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-avatar-thumbnail-size",children:"Get Avatar Thumbnail Size"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioExampleLibrary_GetAvatarThumbnailSize.png",src:s(79139).A+"",width:"234",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioAvatarSize GetAvatarThumbnailSize()\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"to-filter-params",children:"To Filter Params"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioPresetFilterParamsLibrary_ToFilterParams.png",src:s(5617).A+"",width:"216",height:"108"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioFilterParams ToFilterParams(FModioPresetFilterParams Preset)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"load-async",children:"Load Async"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_LoadAsync.png",src:s(49510).A+"",width:"200",height:"138"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void LoadAsync(FModioImageWrapper Image, FOnLoadImageDelegate OnImageLoaded)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-texture",children:"Get Texture"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_GetTexture.png",src:s(9549).A+"",width:"215",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"UTexture2DDynamic* GetTexture(FModioImageWrapper Image)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-state",children:"Get State"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_GetState.png",src:s(33175).A+"",width:"215",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioImageState GetState(FModioImageWrapper Image)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-logo-size",children:"Get Logo Size"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_GetLogoSize.png",src:s(30484).A+"",width:"379",height:"158"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FVector2D GetLogoSize(UTexture* Logo, EModioLogoSize LogoSize)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-90",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Logo"})}),(0,i.jsxs)(d.td,{children:["If null and ",(0,i.jsx)(d.code,{children:"EModioLogoSize::Original"})," is passed, then (0, 0) is returned"]})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"LogoSize"})}),(0,i.jsx)(d.td,{children:"The size of the logo we want to return"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-31",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"Dimensions of the logo if displayed in a 1:1 pixel ratio"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-gallery-size",children:"Get Gallery Size"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_GetGallerySize.png",src:s(84145).A+"",width:"379",height:"158"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FVector2D GetGallerySize(UTexture* GalleryImage, EModioGallerySize GallerySize)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-91",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GalleryImage"})}),(0,i.jsx)(d.td,{children:"If null and EModioGallerySize::Original is passed, then (0, 0) is returned"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GallerySize"})}),(0,i.jsx)(d.td,{children:"The size of the gallery image we want to return"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-32",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"Dimensions of the gallery image if displayed in a 1:1 pixel ratio"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-avatar-size",children:"Get Avatar Size"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_GetAvatarSize.png",src:s(11778).A+"",width:"379",height:"158"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FVector2D GetAvatarSize(UTexture* Avatar, EModioAvatarSize AvatarSize)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-92",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Avatar"})}),(0,i.jsx)(d.td,{children:"If null and EModioAvatarSize::Original is passed, then (0, 0) is returned"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"AvatarSize"})}),(0,i.jsx)(d.td,{children:"The size of the avatar we want to return"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-33",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"Dimensions of the avatar if displayed in a 1:1 pixel ratio"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-path",children:"Get Path"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioModCollectionLibrary_GetPath.png",src:s(41242).A+"",width:"210",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FString GetPath(FModioModCollectionEntry Entry)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-93",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Entry"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-34",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:["Path to the mod's installation folder on disk. If the mod is not yet installed this path may not yet exist. Check ",(0,i.jsx)(d.code,{children:"GetModState"})," before trying to load files in this location"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-mod-state",children:"Get Mod State"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioModCollectionLibrary_GetModState.png",src:s(90164).A+"",width:"210",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioModState GetModState(FModioModCollectionEntry Entry)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-94",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Entry"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-35",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"EModioModState enum representing current state of the mod"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-mod-profile",children:"Get Mod Profile"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioModCollectionLibrary_GetModProfile.png",src:s(28636).A+"",width:"210",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioModInfo GetModProfile(FModioModCollectionEntry Entry)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-95",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Entry"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-36",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"FModioModInfo containing mod profile data"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-id",children:"Get ID"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioModCollectionLibrary_GetID.png",src:s(57720).A+"",width:"210",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioModID GetID(FModioModCollectionEntry Entry)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-96",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Entry"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-37",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"Mod ID"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-total-progress",children:"Get Total Progress"}),"\n",(0,i.jsx)(d.p,{children:"Retrieves the total amount of progress required for the specified state."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioModProgressInfoLibrary_GetTotalProgress.png",src:s(34813).A+"",width:"379",height:"134"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 GetTotalProgress(FModioModProgressInfo Info, EModioModProgressState State)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-97",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Info"})}),(0,i.jsx)(d.td,{children:"the progress struct to query"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"State"})}),(0,i.jsx)(d.td,{children:"which state to query total progress for"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-38",children:"Returns"}),"\n",(0,i.jsxs)(d.p,{children:[(0,i.jsx)(d.code,{children:"Modio::FileSize"})," for total progress in bytes"]}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-current-state",children:"Get Current State"}),"\n",(0,i.jsx)(d.p,{children:"Returns a EModioModProgressState indicating which state the mod operation is in"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioModProgressInfoLibrary_GetCurrentState.png",src:s(54858).A+"",width:"203",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioModProgressState GetCurrentState(FModioModProgressInfo Info)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-98",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Info"})}),(0,i.jsx)(d.td,{children:"The progress struct to query"})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-current-progress",children:"Get Current Progress"}),"\n",(0,i.jsxs)(d.p,{children:["Retrieves the progress value for the specified state. ",(0,i.jsx)(d.code,{children:"CurrentProgress == TotalProgress"})," for states which have completed, for example if a mod is currently Extracting, then passing in Downloading would give you a value equal to the total download size because the download has completed"]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioModProgressInfoLibrary_GetCurrentProgress.png",src:s(62440).A+"",width:"379",height:"134"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 GetCurrentProgress(FModioModProgressInfo Info, EModioModProgressState State)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-99",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Info"})}),(0,i.jsx)(d.td,{children:"the progress struct to query"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"State"})}),(0,i.jsx)(d.td,{children:"which state to query progress information for"})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-39",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"FModioUnsigned64 containing current progress in bytes"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-tags",children:"Get Tags"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioModTagOptionsLibrary_GetTags.png",src:s(90998).A+"",width:"232",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"TArray GetTags(FModioModTagOptions ModTags)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-100",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModTags"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-40",children:"Returns"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-paged-result",children:"Get Paged Result"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioModTagOptionsLibrary_GetPagedResult.png",src:s(91837).A+"",width:"236",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioPagedResult GetPagedResult(FModioModTagOptions ModTags)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-101",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModTags"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-41",children:"Returns"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-default-portal-for-current-platform",children:"Get Default Portal for Current Platform"}),"\n",(0,i.jsx)(d.p,{children:"Get the default portal for the platform the game is running on."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioPlatformHelpersLibrary_GetDefaultPortalForCurrentPlatform.png",src:s(5635).A+"",width:"307",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioPortal GetDefaultPortalForCurrentPlatform()\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-102",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsx)(d.table,{children:(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})})})}),"\n",(0,i.jsx)(d.h4,{id:"returns-42",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"EModioPortal of the portal to use"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-default-auth-provider-for-current-platform",children:"Get Default Auth Provider for Current Platform"}),"\n",(0,i.jsx)(d.p,{children:"Get the default Authentication Provider for the current platform the game is running on"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioPlatformHelpersLibrary_GetDefaultAuthProviderForCurrentPlatform.png",src:s(53632).A+"",width:"351",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioAuthenticationProvider GetDefaultAuthProviderForCurrentPlatform()\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-103",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsx)(d.table,{children:(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})})})}),"\n",(0,i.jsx)(d.h4,{id:"returns-43",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"EModioAuthenticationProvider to use for authentication calls"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-current-platform",children:"Get Current Platform"}),"\n",(0,i.jsx)(d.p,{children:"Gets the current platform that the game is running on"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioPlatformHelpersLibrary_GetCurrentPlatform.png",src:s(55989).A+"",width:"203",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioPlatformName GetCurrentPlatform()\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-104",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsx)(d.table,{children:(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})})})}),"\n",(0,i.jsx)(d.h4,{id:"returns-44",children:"Returns"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"round-number-string",children:"Round Number String"}),"\n",(0,i.jsx)(d.p,{children:"Sets the correct decimals depending on the file size or speed"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_RoundNumberString.png",src:s(10851).A+"",width:"287",height:"84"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FText RoundNumberString(FText inputText)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-105",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"inputText"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-percent-integer64integer64",children:"Get Percent (integer64/integer64)"}),"\n",(0,i.jsxs)(d.p,{children:["Calculates percentage using two ",(0,i.jsx)(d.code,{children:"int64"})," params"]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_Pct_Int64Int64.png",src:s(31773).A+"",width:"267",height:"92"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"float Pct_Int64Int64(int64 Dividend, int64 Divisor)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-106",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Dividend"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Divisor"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-45",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"The floating point result of Dividend/Divisor with no checks"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"is-valid-security-code-format",children:"Is Valid Security Code Format"}),"\n",(0,i.jsx)(d.p,{children:"Checks if the string has the same format as the mod.io security code"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_IsValidSecurityCodeFormat.png",src:s(8421).A+"",width:"252",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool IsValidSecurityCodeFormat(FString String)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-107",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"String"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-46",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"True if the security code has a valid format"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"is-valid-email-address-format",children:"Is Valid Email Address Format"}),"\n",(0,i.jsx)(d.p,{children:"Does a basic validation if the email address supplied has a valid form"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_IsValidEmailAddressFormat.png",src:s(5608).A+"",width:"253",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool IsValidEmailAddressFormat(FString String)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-108",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"String"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-47",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"True if the email address has a valid format"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-time-span-as-string",children:"Get Time Span as String"}),"\n",(0,i.jsx)(d.p,{children:"Gets the time span between present and specified past date FString"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetTimeSpanAsString.png",src:s(52987).A+"",width:"293",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FString GetTimeSpanAsString(FString PastDateString)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-109",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PastDateString"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-shortened-number-as-string",children:"Get Shortened Number as String"}),"\n",(0,i.jsx)(d.p,{children:"Shortens the specified large number"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetShortenedNumberAsString.png",src:s(25047).A+"",width:"269",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FString GetShortenedNumberAsString(int64 Number)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-110",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Number"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-project-initialize-options-for-session-id",children:"Get Project Initialize Options for Session Id"}),"\n",(0,i.jsx)(d.p,{children:"Get the options needed to initialize the mod.io SDK specified in the project settings"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetProjectInitializeOptionsForSessionId.png",src:s(90298).A+"",width:"330",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions GetProjectInitializeOptionsForSessionId(FString SessionId)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-111",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SessionId"})}),(0,i.jsx)(d.td,{children:"The LocalSessionIdentifier option to initialize project with"})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-project-game-id",children:"Get Project Game Id"}),"\n",(0,i.jsx)(d.p,{children:"Get the game id specified in the mod.io project settings"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetProjectGameId.png",src:s(84733).A+"",width:"198",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioGameID GetProjectGameId()\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-112",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsx)(d.table,{children:(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})})})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-project-environment",children:"Get Project Environment"}),"\n",(0,i.jsx)(d.p,{children:"Get the environment specified in the mod.io project settings"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetProjectEnvironment.png",src:s(75517).A+"",width:"223",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioEnvironment GetProjectEnvironment()\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-113",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsx)(d.table,{children:(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})})})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-project-api-key",children:"Get Project Api Key"}),"\n",(0,i.jsx)(d.p,{children:"Get the api key specified in the mod.io project settings"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetProjectApiKey.png",src:s(43465).A+"",width:"193",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioApiKey GetProjectApiKey()\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-114",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsx)(d.table,{children:(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})})})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-language-code-string",children:"Get Language Code String"}),"\n",(0,i.jsx)(d.p,{children:"Get language code string. This can be used for localization purposes"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetLanguageCodeString.png",src:s(11861).A+"",width:"379",height:"104"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FString GetLanguageCodeString(EModioLanguage Language)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-115",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Language"})}),(0,i.jsx)(d.td,{children:"The language code to convert to string"})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-48",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:'The language code as a string (e.g. "en", "fr", "de")'}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-language-code-from-string",children:"Get Language Code from String"}),"\n",(0,i.jsx)(d.p,{children:"Get language code enum from string in ISO 639-1 format. This can be used for localization purposes"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetLanguageCodeFromString.png",src:s(50425).A+"",width:"291",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"EModioLanguage GetLanguageCodeFromString(FString LanguageCode)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-116",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"LanguageCode"})}),(0,i.jsx)(d.td,{children:'The language code as a string (e.g. "en", "fr", "de")'})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-49",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"The language code as an enum"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-desired-file-size-unit",children:"Get Desired File Size Unit"}),"\n",(0,i.jsx)(d.p,{children:"Get desired file size unit based on the size of the file"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetDesiredFileSizeUnit.png",src:s(86318).A+"",width:"249",height:"81"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"TEnumAsByte GetDesiredFileSizeUnit(int64 FileSize)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-117",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FileSize"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-50",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"the desired file size unit"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"get-default-session-id-windows",children:"Get Default Session Id Windows"}),"\n",(0,i.jsx)(d.p,{children:"Get Session Id for Windows for initialization of the SDK"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetDefaultSessionIdWindows.png",src:s(84486).A+"",width:"266",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FString GetDefaultSessionIdWindows()\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-118",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsx)(d.table,{children:(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})})})}),"\n",(0,i.jsx)(d.h4,{id:"returns-51",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"The windows session id, or an empty string if you are not on Windows"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"tostring-filesize",children:"ToString (Filesize)"}),"\n",(0,i.jsx)(d.p,{children:"Converts a filesize to a human readable string with the appropriate unit"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_Filesize_ToString.png",src:s(86011).A+"",width:"441",height:"205"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FText Filesize_ToString(int64 FileSize, int32 MinDecimals, int32 MaxDecimals, TEnumAsByte Unit, bool bIncludeUnitName)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-119",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FileSize"})}),(0,i.jsx)(d.td,{children:"Filesize in bytes"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MinDecimals"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MaxDecimals"})}),(0,i.jsx)(d.td,{children:"Maximum amount of decimals to display of the filesize"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Unit"})}),(0,i.jsx)(d.td,{children:"If Largest, then it tries to display the size in the largest unit that will have a integral part > 0, else it displays the filesize in the specified unit"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"bIncludeUnitName"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-52",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"A text formatted from your specifications"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"getdefaultmodinstallationdirectory",children:"GetDefaultModInstallationDirectory"}),"\n",(0,i.jsx)(d.p,{children:"Returns the default mod installation directory for this game and platform, ignoring overrides and without requiring the SDK to be initialized."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetDefaultModInstallationDirectory.png",src:s(97423).A+"",width:"290",height:"108"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FString K2_GetDefaultModInstallationDirectory(FModioGameID GameID)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-120",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GameID"})}),(0,i.jsxs)(d.td,{children:["The ",(0,i.jsx)(d.code,{children:"ModioGameID"})," of the game we're fetching the default mod installation directory for."]})]})})]})}),"\n",(0,i.jsx)(d.h4,{id:"returns-53",children:"Returns"}),"\n",(0,i.jsx)(d.p,{children:"The default mod installation directory for the specified game on the current platform"}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64---modiounsigned64",children:"ModioUnsigned64 - ModioUnsigned64"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_Subtract.png",src:s(89948).A+"",width:"139",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 Subtract(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"percentage-unsigned-64",children:"Percentage Unsigned 64"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_Percentage_Unsigned64.png",src:s(88754).A+"",width:"222",height:"106"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"float Percentage_Unsigned64(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64",children:"ModioUnsigned64 != ModioUnsigned64"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_NotEqualTo.png",src:s(90214).A+"",width:"159",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool NotEqualTo(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"make-from-components",children:"Make from Components"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_MakeFromComponents.png",src:s(88442).A+"",width:"220",height:"106"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 MakeFromComponents(int32 High, int32 Low)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-1",children:"ModioUnsigned64 < ModioUnsigned64"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_LessThan.png",src:s(76134).A+"",width:"139",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool LessThan(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64--0",children:"ModioUnsigned64 > 0"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_GreaterThanZero.png",src:s(99531).A+"",width:"179",height:"54"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool GreaterThanZero(FModioUnsigned64 In)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-2",children:"ModioUnsigned64 > ModioUnsigned64"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_GreaterThan.png",src:s(42837).A+"",width:"139",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool GreaterThan(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-3",children:"ModioUnsigned64 == ModioUnsigned64"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_EqualTo.png",src:s(68337).A+"",width:"179",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool EqualTo(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-4",children:"ModioUnsigned64 / ModioUnsigned64"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_DivideToFloat.png",src:s(75196).A+"",width:"139",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"float DivideToFloat(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64--float",children:"ModioUnsigned64 / float"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_DivideFloat.png",src:s(27889).A+"",width:"171",height:"84"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"float DivideFloat(FModioUnsigned64 LHS, float RHS)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-truncate",children:"ModioUnsigned64 / ModioUnsigned64 (truncate)"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_Divide.png",src:s(88015).A+"",width:"139",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 Divide(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"break-to-components",children:"Break to Components"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_BreakToComponents.png",src:s(13496).A+"",width:"206",height:"106"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void BreakToComponents(FModioUnsigned64 In, int32 High, int32 Low)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-5",children:"ModioUnsigned64 + ModioUnsigned64"}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_Add.png",src:s(34323).A+"",width:"139",height:"76"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 Add(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"submitnewmodfrommemoryasync",children:"SubmitNewModFromMemoryAsync"}),"\n",(0,i.jsx)(d.p,{children:"Submit a new mod, with its logo data coming from an in-memory buffer rather than a file."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync.png",src:s(64587).A+"",width:"287",height:"198"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitNewModFromMemoryAsync(FModioModCreationHandle Handle, FModioCreateModParams Params, TArray PngData, FOnSubmitNewModDelegate Callback)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"parameters-121",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Handle"})}),(0,i.jsx)(d.td,{children:"Mod creation handle"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Params"})}),(0,i.jsx)(d.td,{children:"Parameters to use when creating the mod"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PngData"})}),(0,i.jsx)(d.td,{children:"In-memory buffer, representative of a PNG file to be used for upload"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Callback"})}),(0,i.jsx)(d.td,{children:"Callback once operation has completed"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"submitnewmodfileformodfrommemory",children:"SubmitNewModFileForModFromMemory"}),"\n",(0,i.jsxs)(d.p,{children:["Queues the upload of a new mod file release for the specified mod, using the submitted parameters. This upload method accepts a block of memory ",(0,i.jsx)(d.code,{children:"TArray"})," rather than a file path. The upload's progress can be tracked in the same way as downloads; when completed, a Mod Management Event will be triggered with the result code for the upload."]}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory.png",src:s(89146).A+"",width:"315",height:"192"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitNewModFileForModFromMemory(UModioSubsystem* Target, FModioModID Mod, FModioCreateModFileMemoryParams Params)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"requirements-41",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,i.jsx)(d.h4,{id:"parameters-122",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UModioSubsystem*"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Mod"})}),(0,i.jsx)(d.td,{children:"The ID of the mod you are submitting a file for"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Params"})}),(0,i.jsx)(d.td,{children:"Information about the mod file being created, including the memory that wiull be uploaded as a mod"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"loadmodfiletomemory",children:"LoadModFileToMemory"}),"\n",(0,i.jsx)(d.p,{children:"Loads an installed mod file into memory."}),"\n",(0,i.jsx)(d.p,{children:(0,i.jsx)(d.img,{alt:"nd_img_ModioSubmissionExtensionLibrary_K2_LoadModFileToMemory.png",src:s(33338).A+"",width:"318",height:"162"})}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-cpp",children:"bool K2_LoadModFileToMemory(UModioSubsystem* Target, FModioModID ModId, TArray ModData)\n"})}),"\n",(0,i.jsx)(d.h4,{id:"requirements-42",children:"Requirements"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,i.jsx)(d.h4,{id:"parameters-123",children:"Parameters"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Target"})}),(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UModioSubsystem*"})})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModId"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Mod Data"})}),(0,i.jsx)(d.td,{children:"A byte array of the mod that has been loaded"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h2,{id:"enums",children:"Enums"}),"\n",(0,i.jsx)(d.h3,{id:"EModioModfilePlatform",children:"EModioModfilePlatform"}),"\n",(0,i.jsx)(d.p,{children:"Enum representing the platform(s) that a modfile is enabled for"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Windows"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Mac"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Linux"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Android"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"iOS"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"XboxOne"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"XboxSeriesX"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PS4"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PS5"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Switch"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Oculus"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Source"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EGameMaturityFlags",children:"EGameMaturityFlags"}),"\n",(0,i.jsx)(d.p,{children:"Maturity options for a game"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"None"})}),(0,i.jsx)(d.td,{children:"Don't allow mature content in mods (default)"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MatureModsAllowed"})}),(0,i.jsx)(d.td,{children:"This game allows mods containing mature content"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MatureAudiencesOnly"})}),(0,i.jsx)(d.td,{children:"This game is for mature audiences only"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EGameMonetizationFlags",children:"EGameMonetizationFlags"}),"\n",(0,i.jsx)(d.p,{children:"Monetization properties of a game"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"None"})}),(0,i.jsx)(d.td,{children:"None set (default)"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Monetization"})}),(0,i.jsx)(d.td,{children:"Monetization is enabled"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Marketplace"})}),(0,i.jsx)(d.td,{children:"Marketplace is enabled"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PartnerProgram"})}),(0,i.jsx)(d.td,{children:"Partner Program is enabled"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioModServerSideStatus",children:"EModioModServerSideStatus"}),"\n",(0,i.jsx)(d.p,{children:"Enum representing a mod's server side status"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NotAccepted"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Accepted"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Deleted"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioVirusStatus",children:"EModioVirusStatus"}),"\n",(0,i.jsx)(d.p,{children:"If the file has been found to be malicious or not"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NoThreat"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Malicious"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioVirusScanStatus",children:"EModioVirusScanStatus"}),"\n",(0,i.jsx)(d.p,{children:"Current state of the scanned file"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NotScanned"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ScanComplete"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InProgress"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TooLargeToScan"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FileNotFound"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ErrorScanning"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioObjectVisibilityFlags",children:"EModioObjectVisibilityFlags"}),"\n",(0,i.jsx)(d.p,{children:"Enum representing whether or not a mod is visible to users"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Hidden"})}),(0,i.jsx)(d.td,{children:"Mod is concealed from users"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Public"})}),(0,i.jsx)(d.td,{children:"Mod is openly available"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioMaturityFlags",children:"EModioMaturityFlags"}),"\n",(0,i.jsx)(d.p,{children:"Enum representing mature content that a mod may contain"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"None"})}),(0,i.jsx)(d.td,{children:"No maturity"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Alcohol"})}),(0,i.jsx)(d.td,{children:"Content contains alcohol references"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Drugs"})}),(0,i.jsx)(d.td,{children:"Content contains drug references"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Violence"})}),(0,i.jsx)(d.td,{children:"Content contains violence references"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Explicit"})}),(0,i.jsx)(d.td,{children:"Content contains sexual references"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioModManagementEventType",children:"EModioModManagementEventType"}),"\n",(0,i.jsx)(d.p,{children:"What type of event occurred"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Installed"})}),(0,i.jsx)(d.td,{children:"Mod installation to local storage completed"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Uninstalled"})}),(0,i.jsx)(d.td,{children:"Mod uninstallation from local storage completed"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Updated"})}),(0,i.jsx)(d.td,{children:"Mod local installation updated to latest version"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Uploaded"})}),(0,i.jsx)(d.td,{children:"Mod file was uploaded"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"BeginInstall"})}),(0,i.jsx)(d.td,{children:"Mod download and installation has started"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"BeginUninstall"})}),(0,i.jsx)(d.td,{children:"Mod uninstallation has started"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"BeginUpdate"})}),(0,i.jsx)(d.td,{children:"Mod download and update has started"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"BeginUpload"})}),(0,i.jsx)(d.td,{children:"Mod upload has started"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioAuthenticationProvider",children:"EModioAuthenticationProvider"}),"\n",(0,i.jsx)(d.p,{children:"Simple struct to encapsulate data passed to external authentication systems"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"XboxLive"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Steam"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GoG"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Itch"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Switch"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Discord"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PSN"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Epic"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Oculus"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"OpenID"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GoogleIDToken"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GoogleServerSideToken"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioEnvironment",children:"EModioEnvironment"}),"\n",(0,i.jsxs)(d.p,{children:["Enum representing which environment the game is deployed to: ",(0,i.jsx)(d.code,{children:"Test"})," or ",(0,i.jsx)(d.code,{children:"Live"}),"."]}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Test"})}),(0,i.jsx)(d.td,{children:"Test (private) environment"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Live"})}),(0,i.jsx)(d.td,{children:"Live (public) environment"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioPortal",children:"EModioPortal"}),"\n",(0,i.jsx)(d.p,{children:"Enum representing the store or service your game is being distributed through"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"None"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Apple"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EpicGamesStore"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GOG"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Google"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Itchio"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Nintendo"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PSN"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Steam"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"XboxLive"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioPlatformName",children:"EModioPlatformName"}),"\n",(0,i.jsx)(d.p,{children:"Enum representing a named platform that the plugin is running on."}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Windows"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Mac"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Linux"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PS4"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PS5"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"XBoxOne"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"XSX"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Switch"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Unknown"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Android"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"iOS"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioLogoSize",children:"EModioLogoSize"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb320"})}),(0,i.jsx)(d.td,{children:"320x180px"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb640"})}),(0,i.jsx)(d.td,{children:"640x360px"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb1280"})}),(0,i.jsx)(d.td,{children:"1280x720px"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Original"})}),(0,i.jsx)(d.td,{children:"Original Size"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioAvatarSize",children:"EModioAvatarSize"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Original"})}),(0,i.jsx)(d.td,{children:"Original Size"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb50"})}),(0,i.jsx)(d.td,{children:"50x50px Thumbnail"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb100"})}),(0,i.jsx)(d.td,{children:"100x100px Thumbnail"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioGallerySize",children:"EModioGallerySize"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Original"})}),(0,i.jsx)(d.td,{children:"Original Size"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb320"})}),(0,i.jsx)(d.td,{children:"320x180px Thumbnail"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thumb1280"})}),(0,i.jsx)(d.td,{children:"1280x720 Thumbnail"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioLogLevel",children:"EModioLogLevel"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Trace"})}),(0,i.jsx)(d.td,{children:"Detailed low-level debugging output. Not intended for general use"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Detailed"})}),(0,i.jsx)(d.td,{children:"Detailed but not low-level. Generally useful for some mid-level information for debugging."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Info"})}),(0,i.jsx)(d.td,{children:"Informational output containing status messages"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Warning"})}),(0,i.jsx)(d.td,{children:"Warnings about incorrect plugin usage, timeouts"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Error"})}),(0,i.jsx)(d.td,{children:"Only errors"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioLanguage",children:"EModioLanguage"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"English"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Bulgarian"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"French"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"German"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Italian"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Polish"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Portuguese"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Hungarian"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Japanese"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Korean"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Russian"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Spanish"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Thai"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ChineseSimplified"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ChineseTraditional"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Turkish"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Ukrainian"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Arabic"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioModChangeType",children:"EModioModChangeType"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Added"})}),(0,i.jsx)(d.td,{children:"The user's list has a new mod to synchronize"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Removed"})}),(0,i.jsx)(d.td,{children:"The user's list must remove a mod to synchronize"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Updated"})}),(0,i.jsx)(d.td,{children:"The user's list must update a mod to synchronize"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EFileSizeUnit",children:"EFileSizeUnit"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Largest"})}),(0,i.jsx)(d.td,{children:"Will take the largest one that becomes a number larger than 1 (i.e, 1300mb becomes 1.3gb)"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"B"})}),(0,i.jsx)(d.td,{children:"A single byte"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"KB"})}),(0,i.jsx)(d.td,{children:"Kilobytes"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MB"})}),(0,i.jsx)(d.td,{children:"Megabytes"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"GB"})}),(0,i.jsx)(d.td,{children:"Gigabytes"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioEntitlementConsumptionState",children:"EModioEntitlementConsumptionState"}),"\n",(0,i.jsx)(d.p,{children:"State of an entitlement consumption transaction"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Failed"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Pending"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Fulfilled"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ConsumeLimitExceeded"})}),(0,i.jsx)(d.td,{})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioEntitlementType",children:"EModioEntitlementType"}),"\n",(0,i.jsx)(d.p,{children:"Type of entitlement that was consumed"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"VirtualCurrency"})}),(0,i.jsx)(d.td,{})]})})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioErrorCondition",children:"EModioErrorCondition"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NoError"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NetworkError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code represents a connection or HTTP error between the client and the mod.io server."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ConfigurationError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates the SDK's configuration is not valid - the game ID or API key are incorrect or the game has been deleted."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InvalidArgsError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates the arguments passed to the function have failed validation or were otherwise invalid."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FilesystemError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates a permission or IO error when accessing local filesystem data."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InternalError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code represents an internal SDK error - please inform mod.io of the error code value."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ApiErrorRefSuccess"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error ref returned by the API indicates an implicit success because the operation has already been performed (ie a no-op is success)."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that a specified game, mod, user, media file or mod file was not found."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserTermsOfUseError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that the user has not yet accepted the mod.io Terms of Use."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SubmitReportError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that a report for the specified content could not be submitted."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that a user is not authenticated."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that the SDK has not been initialized."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UserAlreadyAuthenticatedError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that the user is already authenticated."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SystemError"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that a low-level system error occurred outside of mod.io SDK control."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"OperationCanceled"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that the asynchronous operation was cancelled before it completed."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModManagementDisabled"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that Mod Management has not been enabled."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RateLimited"})}),(0,i.jsx)(d.td,{children:"Too many requests made to the mod.io API within the rate-limiting window. Please wait and try again."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModBeingProcessed"})}),(0,i.jsx)(d.td,{children:"The specified mod's files are currently being updated by the SDK. Please try again later."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InsufficientSpace"})}),(0,i.jsx)(d.td,{children:"There is insufficient space to install the mod. Please free up space and try again."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SDKAlreadyInitialized"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that the SDK has already been initialized."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ModManagementAlreadyEnabled"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that Mod Management has already been enabled."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InsufficientPermissions"})}),(0,i.jsx)(d.td,{children:"When this condition is true, the error code indicates that the current user does not have the required permissions for this operation."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EmailLoginCodeInvalid"})}),(0,i.jsx)(d.td,{children:"The email login code is incorrect, has expired, or has already been used."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"AlreadySubscribed"})}),(0,i.jsx)(d.td,{children:"The specified mod is already subscribed to."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InstallOrUpdateCancelled"})}),(0,i.jsx)(d.td,{children:"The current mod installation or update was cancelled."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UploadCancelled"})}),(0,i.jsx)(d.td,{children:"The current modfile upload was cancelled."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"TempModSetNotInitialized"})}),(0,i.jsx)(d.td,{children:"TempModSet need to be initialized first, call InitTempModSet."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MonetizationOperationError"})}),(0,i.jsx)(d.td,{children:"An error occurred while performing a monetization operation."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PaymentTransactionFailed"})}),(0,i.jsx)(d.td,{children:"The transaction requires a payment but it could not be fulfilled. Please retry with funds on the wallet"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"IncorrectPrice"})}),(0,i.jsx)(d.td,{children:"The display price for the mod is out-of-date or incorrect. Please retry with the correct display price."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ItemAlreadyOwned"})}),(0,i.jsx)(d.td,{children:"The authenticated user already has acquired this item"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ParentalControlRestrictions"})}),(0,i.jsx)(d.td,{children:"Parental control restrictions prevent this account from accessing UGC."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MetricsSessionNotInitialized"})}),(0,i.jsx)(d.td,{children:"Metrics session has not yet been initialized. Ensure that you have a metrics secret key set for your project."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MetricsSessionAlreadyInitialized"})}),(0,i.jsx)(d.td,{children:"Metrics session has already been been initialized."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MetricsSessionIsActive"})}),(0,i.jsx)(d.td,{children:"Metrics session has been started."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MetricsSessionIsNotActive"})}),(0,i.jsx)(d.td,{children:"Metrics session has not been started. Please call MetricsSessionStartAsync."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"MetricsSessionHasNoMods"})}),(0,i.jsx)(d.td,{children:"No mods have been added to the session."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"PremiumFeatureNotAvailable"})}),(0,i.jsx)(d.td,{children:"This premium feature is not available for your project."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"EmailExchangeCodeAlreadyRedeemed"})}),(0,i.jsx)(d.td,{children:"The email security code has already been redeemed."})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioSortFieldType",children:"EModioSortFieldType"}),"\n",(0,i.jsx)(d.p,{children:"Enum indicating which field should be used to sort the results"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"ID"})}),(0,i.jsx)(d.td,{children:"Use mod ID (default)"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DownloadsToday"})}),(0,i.jsx)(d.td,{children:'Use number of downloads in last 24 (exposed in REST API as "popular")'})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"SubscriberCount"})}),(0,i.jsx)(d.td,{children:"Use number of subscribers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Rating"})}),(0,i.jsx)(d.td,{children:"Use mod rating"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DateMarkedLive"})}),(0,i.jsx)(d.td,{children:"Use date mod was marked live"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DateUpdated"})}),(0,i.jsx)(d.td,{children:"Use date mod was last updated"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DownloadsTotal"})}),(0,i.jsx)(d.td,{children:"Use downloads total"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Alphabetical"})}),(0,i.jsx)(d.td,{children:"Use mod name"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioSortDirection",children:"EModioSortDirection"}),"\n",(0,i.jsx)(d.p,{children:"Enum indicating which direction sorting should be applied"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Ascending"})}),(0,i.jsx)(d.td,{})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Descending"})}),(0,i.jsx)(d.td,{children:"(default)"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioRevenueFilterType",children:"EModioRevenueFilterType"}),"\n",(0,i.jsx)(d.p,{children:"Enum indicating filtering options based off revenue type"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Free"})}),(0,i.jsx)(d.td,{children:"Return only free mods"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Paid"})}),(0,i.jsx)(d.td,{children:"Return only paid mods"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FreeAndPaid"})}),(0,i.jsx)(d.td,{children:"Return both free and paid mods"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioImageState",children:"EModioImageState"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"OnDisc"})}),(0,i.jsx)(d.td,{children:"Image data is located on hard drive"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"LoadingIntoMemory"})}),(0,i.jsx)(d.td,{children:"Image data is transferring to a memory location"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InMemory"})}),(0,i.jsx)(d.td,{children:"Image data is located in memory"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Corrupted"})}),(0,i.jsx)(d.td,{children:"Image data is not readable"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioModState",children:"EModioModState"}),"\n",(0,i.jsx)(d.p,{children:"Enum representing the current state of a mod"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"InstallationPending"})}),(0,i.jsx)(d.td,{children:"The mod is pending installation. This state is not saved."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Installed"})}),(0,i.jsx)(d.td,{children:"The mod is installed."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UpdatePending"})}),(0,i.jsx)(d.td,{children:"The mod is pending an update. This state is saved as installed."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Downloading"})}),(0,i.jsx)(d.td,{children:"The mod is downloading as part of the installation process. This state is not saved."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Extracting"})}),(0,i.jsx)(d.td,{children:"The mod is extracting as part of the installation process. This state is not saved."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"UninstallPending"})}),(0,i.jsx)(d.td,{children:"The mod is pending uninstallation. This state is saved as installed."})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioModProgressState",children:"EModioModProgressState"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Initializing"})}),(0,i.jsx)(d.td,{children:"Download information is being retrieved from mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Downloading"})}),(0,i.jsx)(d.td,{children:"Mod archive is downloading from mod.io servers"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Extracting"})}),(0,i.jsx)(d.td,{children:"Mod archive is downloaded and now extracting"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Compressing"})}),(0,i.jsx)(d.td,{children:"Mod archive is being compressed from files on disk"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Uploading"})}),(0,i.jsx)(d.td,{children:"Mod archive is uploading to mod.io servers"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioRating",children:"EModioRating"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Neutral"})}),(0,i.jsx)(d.td,{children:"A neutral rating"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Positive"})}),(0,i.jsx)(d.td,{children:"A positive rating"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Negative"})}),(0,i.jsx)(d.td,{children:"A negative rating"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{}),"\n",(0,i.jsx)(d.h3,{id:"EModioReportType",children:"EModioReportType"}),"\n",(0,i.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{}),(0,i.jsx)(d.th,{})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Generic"})}),(0,i.jsx)(d.td,{children:"A generic mod report"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"DMCA"})}),(0,i.jsx)(d.td,{children:"Digital Millennium Copyright Act mod report"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"NotWorking"})}),(0,i.jsx)(d.td,{children:"Not working mod report"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"RudeContent"})}),(0,i.jsx)(d.td,{children:"Rude content mod report"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"IllegalContent"})}),(0,i.jsx)(d.td,{children:"Illegal content mod report"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"StolenContent"})}),(0,i.jsx)(d.td,{children:"Stolen content mod report"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"FalseInformation"})}),(0,i.jsx)(d.td,{children:"False information mod report"})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:(0,i.jsx)(d.code,{children:"Other"})}),(0,i.jsx)(d.td,{children:"Other type of mod report"})]})]})]})}),"\n",(0,i.jsx)(d.hr,{})]})}function a(e={}){const{wrapper:d}={...(0,r.R)(),...e.components};return d?(0,i.jsx)(d,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},47438:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},89913:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},4650:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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0COxD+j72H7x3m75Olscd8QO0MOx97kc9XLFC0neKh1HtcVZunTFFVfQrFmzqEePHtS5c2dTHQowf/58+sMf/sBKhsnE5CLBK8AzQzErSmeccQY999xzdN1119HGjd77scPCMSjVY489Zkg9+uij9Oabb6Zj/V+y/I477mAjCu+LTbyf//znPA54QnjKa6+9lj+FhYW0dq18C+nxSlgz5+XlhZLD5b+6detyOI5I4o033jD1YBywubZr1y7m6Xe/+12V9ymqMr5kltjcLNsq+q/o+UYiv0y8SRX1BLCREjm9RFieueVoxkxGv2QhzaLVtDMm32wZTLtEPspRb2+siPomCujlkv8QgUrlLEHJnn76ad4k0aGYpo0NnuXLl7N1njNnDj3//PORdAyXpBBWPvDAA2zldaooHMNabtSoUabeRRddxOvPmpgQJmONijX0448/Tueffz4PE8YTwEGUoz+33357igiwnsariREeH88E0GN3HIYe9wroMBx9gMfrr7+eBg4cyMb87rvvDu26Mt6ijg+EY+W7xHogX5xVNEbxZDZRzvVi0lDFS1dQVsnC4ykSH63jK22LdMdkc1pMm4V/lp46mMQTyWmRKEe9PSTfVvnjxFl0TfnACgcL64w12OTJk3mjBJY6mF599VUqKiqi3//+97z5EbZpEmyDTR6sqbGms1NF4Rj6xw0nWBfCU+Xn59OkSZMyNkknC+E9e/ZwaIs0Y8YM3sC6+uqr2XNjiQQgIQEwWHcD0LhMhvd2X3jhhRy233zzzcdtOADzjTfeyJe5sNGmE/gpKSnhm3vgeRFRhKXKeKtsfEFasfItRLmF4lmU9UL7ScbEfk1uJwHsLVwHoM499HdRV270ZSJlDNibYjupDxVU6IHhmftQB0K9euKSANLE+GJ6PWtuheO88soreR1VUFDAaz7ssFa0dsKGCTbNWrdunVZu8DhQjFdeecUXslUUjsFwYINo5MiR/Pnss898O79pO6xChbTPnK4CrWOtiiUKlj8IgQFWGNZx48bxDThYxuCNpUgvvfQSXXPNNfTII48wwH7xi19wlIU5swF4rPx88cUXvDFme2vQRNSF5drq1as5RJ89ezZfsgumynirbHxBOvFiYVSyGlOy7ggBXOx4a1jhOfwNOB/lqBcvFy99zDCowV+kN4FU5RqjHjQuaWH3e1zsRfo25l3u0OWnic2yvyZvFL76KH2atYrGlvejn+Y+SSUkX2gfTOABioFLJ5gQJOzUQmGwM4s19pIlS4xyYW2GUBGXZ3Cs6G4jrL1RBwoCZUAkoO8Sw6bQgw8+aHZsbZ6g1Lfddht7J4ThuHkjLD377LN0yy23VFuHEQ18/PHHZr+g2oRcw4xKoDRvqEAYKosAAANGSURBVLikdRbvflOJeKKvWFNzeC48OUAdK15MOcXH5xo7jH26N4FkzGN/GF9C7agJ3Zu8hFolG4ntMdkVPDW+/yp5KZej3rL415WCGu0Q5iEMPPfcc/kcH1zOCK6z4dVx6QVluCa6adOmSBOKS2HYDQcINc3KwrGPPvqIwQY+3n///Uh9uEo1VwIAbfwI9meKKVl7ECUa3c5HfI8fnnbcQB1Vghm7V/yd7AXUvrQZXZY8hx5P3kCzk2tpiVhTnynC70HUlUE9IfYloV6UBNDBM+oX2aMN1rVPPfUUA0yHrAMGDOBNHqy7sIGCSx9RE26SuOmmmwheds2aNRw2wjNjBxy3hSIU1d4c11Lx4wzsFCMicMlJILt0KRE+J0HKWCiux4br1Likhd1vbJRhTT0/toE9dVRQR5FTMBSP0uZY62CzDbvGzzzzTIWkXCh+rFJ27YMSiBKKZ8xja2YA3ncomlf+V5lC7PZiRxy75mGXeP5VxuH4rLkSyNgau+aKjPgaNtbYuG0Sl1QqS7jeeqxJ3/98rHRc+1NHAjUG2LjDSF9uyfT0vffee/yDEtz6mC5hFx+XhKqbcAOGW8NXV3qnbruMh+KnrmjlyHEHHHbOsdau6s8v4anxMADcEumSk0BVJJDxzbOqMOPqOgk4CaSXQJTNsxoTiqcXh6vhJHDqSMAB+9SZazfSU0gCDtin0GS7oZ46EkgL7OrcJ37qiM+N1Engh5dAlJ/ApgU2fkyRrPAH5D/8oFyPTgKnsgSARfz8NV1KC2z8RM/hOp0YXbmTwA8kAfEwFsZkmpQW2HiKCMJx57XTidKVOwlkVgLAILAITKZLaYENAnhaSEz8c+BOJ05X7iSQGQkwqMU/YDFKinTnmXb9uC+afx4pHuGETlxyEnASyKwE2JkCcsJTA9RRwnBwFAnYqAiC+OCJIfgt8tGjR/m3zm7XPLMT66ifmhKAAwW28NAQ4C5K+G1LKjKwdSN0UNVOTs2pcaN2EjhxEoi0xj5x7LmenQScBKojAQfs6kjNtXESOMkl4IB9kk+QY89JoDoScMCujtRcGyeBk1wCDtgn+QQ59pwEqiMBB+zqSM21cRI4ySXggH2ST5Bjz0mgOhL4f5bo2rwINWmAAAAAAElFTkSuQmCC"},11595:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCommonTypesLibrary_MakeAuthParams-9889ff972f1927cd2d65350a785da1b8.png"},4568:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCommonTypesLibrary_MakeEntitlementParams-ca9ee94871d4bcb815ae1afeadb102d4.png"},18778:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},11520:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},61327:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions-0f1f9aaa5bd0c3c642e84ee61ceff02e.png"},59800:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},68979:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJ8AAABMCAYAAABzsWVhAAAL7UlEQVR4Xu2dW28UyRXHz9xn7PEVDAHDIryI9bISLNmVLJBQgogSiSgIod19cJCAVx73Yb8DX4AXlKeQsPsGLwQBK5QHUPyQhbWB2MgXsg6stb6PZzz36Zx/jcuMzIy7usfjme6pg4qZ6a6uy6mfT1Wdqu72HD582CAtWgN10IC3DnnqLLUGhAY0fBqEumlAw1c31euMNXyagbppQMNXN9XrjDV8moG6aUDDVzfV64z9W6GCfD5Pq6urlEqlKJfLUaFQEJ9a3KEBv99PXq+X8BkOh6mlpYV8Pl/VlasKPsC2srJC0WiUTpw4Qeywpra2NopEItTa2kqAUouzNZBOp2lhcYFSyRTNzMzQ6OgoTU1NCeMi29puDT12VjgA1fLyMu3atYvOnTtH58+fp927dwvYXrx4QWNjYzQ5OUlv3761Wy59XYNoAIDt2bOH+vv7qaenh7LZLA0PD9ODBw/o1atX5PF4qKOjw5YltAyftHZnz56lq1evUmdnJ92+fZsePXrUIOrSxai1Bvbu3StAHBkZodevX9Ps7KywguiSrYilbjeZTNLS0hJduHCBrly5Qs+fP6ebN2/q7tWKxl0Qd3x8XPRsfX19YtiF8R+6YgCJIZeqKMOHLhUZHT16lAYHB+nuP+7S/fv3VfPR8VyogeGRYdq3bx/BKPX29tL8/DwFg0HlLlgZPozxQPXly5fpzp07upt1IUx2qjQxPkHohjEcC4VCYi7Q3d2tlJQSfHCjYNZz6NAh0b/fu3fvvcT7fR46yLPvdi8PQD1ESDjDAfu18vxfgT8RMP9FKPAx8SmPiTjGejw4akrjIF6K4yxxmOUTSb0RTKmBtyMSutwDBw4IAOfm5oTbDe4YM1GCLx6Pi8QuXbpE165dE368jZLnDTJ5nvkUDA8Z7LqWsIERQCR/i88S0ACmhFCAuBFU4x2QOJfji0XQ8Jm17baen5iYIIPbCpxIXswKYAof/DmZTEYk+vDhQ/G9nOQ8XiogsOUrkIen4EXINsKX3wDTukUsBbIUQgFnEUABKiea5y85TkdLY2kArjf4AsEIuIFTejMxhS+RSIhBJPx4jx8/rpiWwRavwECACREYQPwlAJHi76L1k8eK34vH1+Otx5HQFqFbBxjgMnwiaPgaizwuDcBDWwYCAQI38P9VBR/6cUylMct98/ZNxbREd4uwBksRQoMihTx9Eg7SgaCfOtgqLjE4U5kc/ZjM0C9sKRGnFLDi9YBLgrkGrTiKNAsCPA1fw7G3XiAsxYGbquHD+A7mE1SL1q8k8pykj7vdPR6DPm+L0C/ZPN1ZjNOLZJo+Dofos2iY/tAWpqFEmkZlfJluaTrljq3T3bjKb+aSgZUs/1NZWjXtdmGZIJjRWJEQ+wU/Z8CGV9P0t7kYz045HR4ITmUS9H0sQRd3dtBAa4jmY0nayd36RI6X7GDutDSNBpTgw/od/Df4rCQ4h39ipsHhSCRAs2zx/j4fEy4XLx8DWvjM8Je/zi3TN3t30KctIfqZJxCD0RD9ZSVFaZGBSEkEDAxFksVfogzF31oaUQOweOh2pdHarIw128/3QcBPT1dTwjdXTlJ88IdEig5yPMTp9XvpK7aENStQI7ZUk5fJtK0FwTbMDJzN/+ExXqUMcBxjwG52TosumaU/6KNPQ6bGuMmbzAHVZ17qavliPH47EgmJmWw5AW6f8PkF7nKDa935aCZPP6b1JlQH4LUlRTS1fHZz+Smb4/FcmCIVxmcRBu7XrWGa4ngtHGeMx4ffxtNitUOLczWgYvFk7Uz7OCQmB/tWVPIymaXf8mz3zzvb6aac7a45nsMM3kU+3sPjvLuxFBV4ej4SzzQUeCdPniQEKbdu3aI3byr7Oa3oxu1xwYsKhKbw2VVUmh3T/17N0Gc8m/36V91i8vGSf/dHgnScLR7AG+Lfs+xozufZcWw3I32dYzVQM/igkZ95xeN7dp8cCQfoT51Rutj9boXjHh8HeFrcp4HNXHKlta0pfMgo4fXREE8knnCQW6TEzhUNnvuos1gjU9Mj+26VPtxi3jq6izWgwospfEI/Nvx8LtarrpqZBhR5qXm3a1ZOfX57NdDGG4N34J5bXgYLc0jxxHCFwzx7HFb4/uvtFCX4xADSZM3/JY/pEJpBsL3s9OnTplXFdvIbN26YxtuuCD2xGPXwfbcpbs9pXn9dZug62JXWzTuX9vNtErP8OdveXlVxrKyIKcFXVWlceDH2N2LDpJmoxDFLY6vOw+IBvCWGbpLLn8fiPyce5zDD0PWxFRRgcrwgW8EY7zTKcpxaSm1Tr2XJ65i22HmtEMrd61KvYqOrhcWbYvBya+ChLAAQvwEkziOeh+t2mO/P9tZ4t7i2fDZoePbsGSE4STDG+x9DBtDKCY4vMnz78CgU/t7KVvBD3kY3zk+ksLrLUtXPp2T5VBNzUmM0W1kxuYit7amsVPdlPo94EtAuHgfu4BvC7cjWuVrs5K6vaSgNYFbbLtbpywuOY/KBeLK7XeSbwOctPH9FBbjS3HW3W6Exnjx5Qgjl5Pjx43TmzBlTuDDbvX79umm87YgAd0oXTywwuSg3kfDz8S6GD/EC/B3gjfPdZ8Ymu9crlVt1I4pSt6tXObYDj9rmAT9emOE6yN0q4JIWEJ/4jeM4j3irHOyCZ6UW2vJZ0ZaD48KBDD8e3CkfM2SYXGAMiK4YFg/gzbL7aDsdzRo+G0A9ffqUEJwmcCCn2Y/Xze4UzGpLVzimt3CFo3iHtblo+CroaGBggE6dOrV+Fs8hFPcuO1xibAFjNaqD2Hi8NkZU8ZAojfkUQa5RlXSybtWAsuUDyVan0lBaPPcR5fz9vJyzn7fJd5OPFshXmCZ/bpSi/jG36rW566XW64rH6G0qKuazUgKxwgBlg8fIk18kb+ox+bLTZAT2UyFwiNLB31Ah18nP8xsyK0Jdzg8NDRGCFjUN2DFMpvDJrKXlK+3XNysWLB7A82anyJe8z/fvrnJ0/pPI/JcKmR8oH/k9ZQPHKJ5ZIn8gREFjkuNgmVuLkzUgOVExWmpjPhvaQFcLi+dLPmCoEkXwhBjiN4DEecQzuDNe8g7yp/lOERtF0Zc0qAZqBh/GeJ7sxBp479celhDnEQ/fs9RLy54vOWLNitSgTdC8xVJuaat9OiYXntx0icXbqGSelud+EpMQr1FcvE57PqKk51jztkaT1dwUPruzXMxqDf8Hm1gynj3zeRHPExRqDxlj7GkfbrImcEd1S+cCqvMCU/jsqgbuFCPQxzeDt5ZNokBRPv+hcLsgDsDrML7jNcfm2IpvV6+NeJ3VXlHWwRS+crMWlczgxzN8XTyr/R3D1VZiAfmh4fwbx3Ee8fzGjAavEamqokwqs11lVwvKYaULhgO5kOtid8pRfjXCFzy5mBRjQMO/X1hEgBfIDWtHcxUN3GiXqgBXWmZT+HCzDO5FwNMmrUq7918Uz7I7xccrHOET3KH+8d0KR+afGjyrCnVIfPCi8j5eU/jwSiO8V8HsnQqV9BL1YQmNw8YnAZnm7BBN62K+t+yKd3CAGzMxNWd4+QvesbpRVMZ9Zpnr887XgOSgtMsFLyqvvzKFDwSjy1V5tL3zValrUK0G5APBt8TyoTB4kS9ea2l10lFtRfT1ztMAOAEvKmJq+SR8eAVWpfeuqWSk47hTA6XdLvgAJ1sKnwQQd2Pl8nxH+9puVT3ucydQqrUqbX9wAT5UwUMeSpYPEcN8/yZe4puIJwSAWrQGpAby/H49cAE+wImqWHJ4SKoXFhbEW8flg3CsOhdVC6fjNa4G5LNq0NXiJX8Az4rVQ80swSe7X0C3srIizGwwFCS/z2/pxpHGVaku2WYaKH04EqxdJl0c4+F1uFYsnszDMnyyC0ZmeKM0IEyn0sIJDa82rKCd1RDd7I2tAaxaAD64UuBERlvjlabRKh4oaQs+qSZkjADTCysI84tClnNKN7ZqdenMNIDeDkYFRgcOZFi8aqUq+GTmKMhWFKbayujrnaUB5dmus6qlS+sEDWj4nNBKLi2jhs+lDeuEamn4nNBKLi2jhs+lDeuEamn4nNBKLi2jhs+lDeuEav0fiopCPaEpTYQAAAAASUVORK5CYII="},70504:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},92606:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetExtendedInitializationParameters-b675994c5f5117d737da5f13331ec33b.png"},39644:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetGameEnvironment-9bf28c658ca9a8175e27f7f1e2e6ce09.png"},12376:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetGameId-733baa40804b516d3926e06d2e5ffed7.png"},80807:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetPortal-c2c8e44fc927853c409eda072d2e604b.png"},81294:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},92464:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier-b89970e3d3bb90d64d62b75ce76c02ee.png"},70690:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},81069:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},8796:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},7163:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCreateModLibrary_SetInitialVisibility-ea630d72471876be3f92ec2a7f62411e.png"},56359:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCreateModLibrary_SetInitialVisibility_DEPRECATED-f8acc13f3be4d819e740b51766dd4ed7.png"},11563:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCreateModLibrary_SetMarkAsActiveRelease-d40c905fb2ac942db96dcf0e0982b680.png"},66981:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},37723:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob-46906f25f1b2ce9866b41ebe2954f9f0.png"},34393:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},35536:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},99860:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},6715:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},70153:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},30429:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},12246:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioErrorCodeLibrary_ReconstructError-fd34e6c485430ac5359952f8ad438ffb.png"},20798:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioErrorConditionLibrary_ErrorCodeMatches-0577e7c35976e2a2d2733042ba1b514d.png"},79139:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},57932:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},49633:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},97963:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync-ccc2c7187edf30a0c9472a75052ae921.png"},11778:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioImageLibrary_GetAvatarSize-082b1eeffcd2b743f94a66210f340b0b.png"},84145:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioImageLibrary_GetGallerySize-9626c66c39dbc11535dffd35e279ef87.png"},30484:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioImageLibrary_GetLogoSize-e5d6147cf8343e10fa23bdb08d0b646a.png"},33175:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},9549:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},49510:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},57720:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},28636:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},90164:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},41242:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},62440:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioModProgressInfoLibrary_GetCurrentProgress-cf02a1331822e1a6d164eb0af3fe972f.png"},54858:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMsAAABMCAYAAADDTkNTAAAgAElEQVR4Xu1dCXhX1ZU/+WdfSEJIgJAAIRJIQlhk32QHaVERV2R0rB2tVjvqzPdNO35Tv892xnG3nflqnY6tY52ORdQWrV8tKigooCAhBMgikBDWAIHs2z/bnHPuve/d9/7bCyRQ5N3w5//efXc599zzO8t9739f2JgxY3rATS4HXA6E5IAnZAm3gMsBlwPMARcsriC4HHDIARcsDhnlFnM54ILFlQGXAw454ILFIaPcYi4HXLC4MuBywCEHXLA4ZJRbzOVARG9Y0NPTA01NTfzxer1A52FhYb1pwi3rcuCScUDJa1RUFCQkJPCnN/LrGCyNjY1QW1sr1pvDPRAZFQlh+OcmlwOXEwd6oAe6urtYlukzcOBAGDBggKMhOAILWRJq2OPxQHiEB9LnDIGhU1NhQGY8hMeEA2OGngNQ37au/T4igFZJJKxkHDuiOXghtnSSGCdYZjJk+QuhA5voy0chLshgU2X7WDTieLTaXJEA+Z0HNaeKRZLzomnZoH3QerY6VrQQj1R5OlA8ozx5gb+0c32yjX5lO2QpRFmqLtuj727ZnNYHXe9o7ISGykY4W1oHzSeaoauzm+WarAtZmVApJFiok3PnzjFQ4ofGQdbyDEibmALexg6oP9IInW1dTJwuKiZDRL71XJa1MTmgoGmYsgwmUL6fEYfCzHn3bQGIJiU0YCfSrsoxgSaV4ki2oSsgows/7m8ARWWwQxN8LqrK2/ho4EwKZJg+f3beGsJuMsICBuqHZAMzuRsWYk2odSHvFoTYwaK3R231UDn6h9/UFn+jCIp8IWuWMnSdrmHdiIQIGJAeDyOXpsORjSeh6UQLgBdYvuPj40O6ZCHBQlaFUnRSFHaSASn5yVBfQSDphO5Ok0BzoIoZVlAIJkimyeNQSFYyI9loK24XroCXHXXjt5AhAxoQAgnM+fdiwkSCRuGM5VszlAYGdXTrmgAL60aeSbJoCnHCgJD0BlUkdkBpY/QBhU4TCzHNtwkOIR8aqCzgkArVJhcMDgUuCQ4GHB9LeVJlGBSivAKHcSwB5K31Qs05L0QmRMKQaanQ8Wk1tNW2Q7e3G5qbm0Nal5BgoUbIqgydkQYJI+LYjHW2diFQuvnDhEvtIcyqFSx8TSYeoM4kVdawx4LBPomaDGUe+gErBlhZaPwDxh+5wXDjMwyVIQXdqGsUxAPxz0wKVILbjAiLIePyshIjzkSGqGqlwjyVffkgTnVNKFN90lwyBAwPXIBDgkTNqWKbBgS/QNOBZRybAFDWRFknJUsGaCQgAgHFoAsP2uvaoWZPByTnJMKZPedYjskohHLFQoKFVr3CI8IhIi4cutu7oL3eyxaFOujqEGBR5o+AwGjWUM/sVKZYEzjWGILXYsI1raNOTekwNVIwQTyva7pQKoIkXX7bC0RKMNRosmkXakMLKEAIeRTyLAtLbAhyJBAYAzoItIbZcujg08Gj2lCAU43bAeUHVD78kMBgwARQckYd2zyL8iYzlcwY1kjKDcuJj4UhoCo3TMiOr/ul8lV9sxz13NHshZi0GAiP8kBnSxiv7oZKIcFimE4krulkK3QhYAgkXWi6uvG7uwtHYphGMQDTp9QIxPzw6HAYe+tVkDgyAZqrW2DPf5VYmaw0il1YDZ761+6hBnkh1x1bDru0BIlZxCXTGnBVDSxCTqX0amD2AYcOQiXc1I7WPllkw8rIdgUQBdos3dAJ17daHgVSXfDtPKU6yogZQLDPoxAHpR2lmyZbMiyQnGw7ADTQmMpXypcmf5aAX7ll1LbmujFZXT3QeKSZx8+0+0W7dZQhwaKKd3Vgj80dDBACSyeCptuLHwQLEy+JMYMrzFfCL1cnpt2fj+URNJFiscCL7RmDU4zUtE2EJwJmTJgJY7LGQkJsPNQ3NUBR2W7YU17kSP6nFUxnRuzY+6Xf8lGRUTBvynzIGZkDkRGRUNtYB0WlhbD3wF7f8o5RIwUxCIVWWVQoERWUoE4dN42PvyrZYTYohZyEP21gKsyaMAeGDkoHD5Y7XXsavti3DaprTzEOJo+dwmDYfWCXbFi0ze0rQCnLhd8Ts69mwSmq3C3KMTHaIBQSbBbLaNw2XqpqsEw/UP60FE5lYLi64ZVosYoOEpvQGx4MBfhKSRvfUiapXT3GUaDEvM7mTv8WMcDcOQILeaWd7Z3YRDgCBS1LO1kW/CbrouIWGqixWiGDLAKLRHdy9gBcbk6DDx/6DJqONwMgaLr1gUlmKQ5Tn6u+fTNkZWbBgcMHYM+pIhgzaiwsnrkEOpCWPaUSMEGEmASO4q2tX271O/zrl98AOaPGQOnBUjhdcwpyR+fB0tnXsiIoLit2BEilie2aSddWPnpatwgsVRpgpJROyZ+KIPDA9l3btAUAUTEab6qtWnAzRCDAC0t2QXd3N0zMnQQr590Er7/3GjS2NMLVOVMgzIOKYs8XBkAMa6YBRoFz4qhJ3N9XJTslUGwgFkjWLKCv9VFA9Ms4NU86iiRSjECeZMUWv1qCeZYn2ZABAJHns3SsyZMBKrZqoj4pbZW0KCzonIcPGjToiWAl6urq+CZkwvA4vBsZJl0wAkwXdJJlQcB0dXZBD1oeEfSL7x78jP9uHuStGQ1ZyzIh+1sjoR1XHva+Wi7dN7N8D9Yhsyi+qW4PDE1NhwWzFkDVscPw5vq1cPTYUSg7WAYzJs9glbWvZB/XyRicAauW3wRL5i6BvNH5uG5+Ds6ePQuP3vsPEBsTCxHhETB32lzYVbQL2tvaRT/4SU1OhaXzl0HlkQp467234Ojxo3Do8EGYfvUMCPeEQ4e3A+5bcx+EoSBXVlUiPUPhB/f8PaQkpXA7D9z1AAxMHAjzZsyHsO4wiAqPggfuxLwBIs+DeceQZqLvxmtvgsVzlkA+01fL9I3NzoV7V1P7Hpg1eTYsvWYZDEsbBgcOHYQH//Yhg/bZk+dAYTHS3i5pR8FITR4MU8ZPha8ry+HDLRvgyPEqaECrmxA/AM6cPQ1rrrsTYqPF2GeOnwVFJUVcPzvjKlgx9zqYO2ke5I7I5aC25txZuO/GByAmGv338HCYljsDisuLeYxDBg6F5dO/BXMKroGcjDFQ31AHtfW1CE4poCRw6piXcOVHHoNc0hWLQPJDZbABElZVnr0TUp7aMjCV5zK2do3+ZNvCs9EUtVLYRp60WHJ1TsXG1J/yarpJdpGm5OTkoGBx9mwYtUsgQGAQCDhWkathXUgsd6YBhYN/LH/o/Sr46ufFsPNnyPxGL8Snx8FtG1bAbR9eB7Mfn8L1qD1ukz8IPnLz8DgZBZFS1dEqsZiA/dDK3L//7El4849rOS8uOg5Wr7oDEgckwudffoZC7oGbvn0LxMckwMYtG6GjowM6Ozthw6a/QFtrq0Ez1R2EYKF0BAVajaWutg6e/8Vz8Pa7bzFohXJSY5PLemRB5bXskdlQvL8Yvj74tU9e+aGvUeDj4HaNPrJyq1bcjPTFs3BQmjRuEo/xxMnjcFXWaJiYPxE2fbbJoP3DTzdAWzMubyKvOFbEz6nT1Sy0OVljgMA0IDYRSr4ugd+v/z8G9ubtn0JHpxj7xm0fQWtLGyTFJsN1869HHkXAF0XbISoiGr41ZwXERsTCZ19tFuW7OuGTHZuwfCvEYP7Keauw7QGwc/8OtjrLZ62AuIg4Mf8yZmUPA70NXSb4mGnVrkna1RjMMlKeuE1qR8qA9FpUXEzAUfNk5Ekly6Ai+THKSIWtg1SCjssoEKp7MA5dbEdumDJbYeGiI/4QggndRsckWCLYJw1BCK6rbBDoRdMbPzgWCl/aB+VvVVjW2+33XtTNMo90PmjCqb1bV94GOdk5LGBtbW3w4i9fgLwx+UBxR+GeQigpK2FNes2seTAiYwTsxrzF1yxmN2zHLvL7rSkCtSilLmzfMO143oqgEiCR5dm9NFd7RBwmru0t2Qufb/+Mj5MThVbS86ZPmaHRV4r0RSJ91yB9IxH8yDxMRXuLYMu2zZA5LBO+c8c9kJaSBu998C4sumYRC+jOwp3a0rFwg7zdHfD6utfhmhlzYeqEaTBn6lw4duIofLLtUzhefQyK9u+B+TMX8Ni/2rOLA/xm/Fv7p99DY3MjtLS1YAyYAJPyr4aUxFR0aYth7tR53F/hvkL2tgqyCziOIytTfqgcwsPCOX5MH5QB5YfLZDwjXDER+iBT/MU6gptaAGPlrbHcrDHd5L2YCLUo4Pc+DcuaHrNodcyoyVKGu9JuaciZDvnlCCzk04klYTloY7lYSI7I14hWS4kyjkkckcArYTX7a+Wqg/QS2Yc0aeRDOQgyi5TCEQBUZtuObazFb/z2jeiri7zkxCQuM3PqTP6oFIeLAXq7lmNZiFfxtPZVXXJHutmJljmKRl37aECylFMTLq8Hoi82Ng4amxpFBxzA4qMYXooJgQXUWDFi/574Klaa0GeTdQBdqEb4y6YP4KPNH7ESWThnEaxZtQZee/N/MP46bfCCLRjW60ZwEjhGDR+FfTfgHWvxeIeHvQY5XuyPLT1+D4hP5OtTxk3hj8GfyGjW/sZKGtWRS3kq/GIk8SAsYb6JGbsm1wAhWKKBSw1Zly+1lExl1W0Jrij4ZYBN5ak29XMV+3A1O0HGcC0HjsDC84QOmwoGwzCGAWKwWHcTd4TJoUMCzCVPIgGvYX5KThIvBtQerFdqSNoNLCP5KQZI7QnCa87V8HfW8CzYgn/HTxznYZFGJo1JRRukwG3Y+BfYUWizHjyJJChyzmzjr6k9yzkjMocbqz5JCL6H738EDlYcgC93iRU0ekLVpw09tlXHvvEuNODDp5SYPpt1yxubr1FkDabFnAradUFUFcbnjYf5sxfA1h1boWjfbig7UAbRCPIVS1ZA9ohsOI1xiy4xxNsZV8+E/Jx8eHfDeig7VMYx3pQJU+WKpWhZYZO6VmDetH0jFO5Ha8MF9Jufcn55usScqSkUB/40oTlki+W2KCZNkcpmVIDOp8qS0AlZfKMr/yBhTtpI4SrO8KHNET4uYzkLdMLzhn/h8kOyigLr8aAWwjwSeFbGtF5Nwk7lpXKh/OTsRKg9UMcDDafyhrYweSowYmrRavTLD1YehNGjRsMdN6+GyqOHIW1QGsTExLC/Tis9peinL5izAObNmQ+xsbHc7qiRo+Ct9eugta0VY5wmSEsdDEsXLIXN6OpQDKNS9amTUHG4ArKzstHFuxXdlxOQj24dpbID5XCm5gwHfePyCqCtvQ1GoRAqgTJxwVwx8kXbcnkWj0rLkb65kj5cbKAhMn1/XKfdUPQFCjWpaF8yfwm7aZ1divYwjG9OYDCfwK5aclIS31CbWDCJe68+fZIpamppZn4tnL0IQUXxnHA7C3LHQ/rgdJiIsRIlzkfGNbc0QSq6gAvQfdu683N0vcrYvaOYKCYqhsuS+/jex+uZH5xIiyuGWoRPO9HzdSvB9VVl89hys9qwJqIv2aUQE2V9fCyJVs4vbTJTsywODQuEXA2rr69na5GYJVwpq9shUEGCS+Chbw8Bis7R+qjz8ffkQvXOM3C2RAg5g47q4beH6yoQWtsoxyVdEtiRaF3ycvI4kC/HFbE/bXgfvJ1e8HZ4oQpXgmjyc3NyITU1lS3S4WOV0IHC1YRgGZE5EjIzhsO+sr3Q7m2XtIo+v0ZfnCwHAfKqrKu4vc++2AK7UVtTwNvS2sx9Dxs6DLbt3MoB+FlcbaNl5gLU7serj0PFkUMs+CkDU6AgX+QdqjokYouOdlzNk/SNyYPUQUTfGTh8tBKSkpI55qJY4zAqAnrUYvKEKbw6VYqWgoR9ROYIpD0T9pXvgzakncw00d3mbUPlUYlASYYx2WPQ+qJrhbHIpq0b4SCu6BFBza1NMBxjt8x0rH9gP9M1FPlEsREtOe8r3wsjho1gK3QMrzVh+RHDhuNYM2A/lidX7Vj1URiCq4C0vD5o4CA4V3cWqk5U4bhMpaM7WhanywcIQsNztnSdiEnCxTc8KAMQDEP9zr3CiwIoWwvNoinwqj5CWA67q0bgC7UaFhZqk72qqip2e4YvHMqP49PNSfJZ+U4+rVgYd/DFTUgP3nDMWz0aThWegVO7z0LmPNRi9+bChu9t4RUxq1YQGkI3s3xd11ps1WxazKYxHJlUR4Ws2s7Kb0WYpg39HQYp5uOpKSfffkE3NrYybLGxX8OeaXWVq2RqNHnR0p40+dY7ozwSoylSXpYMPz6mPgcWlGgXdA9CtyQWgTfnWyBFfBgsbEHUnIjlYdO82Fwp3cLYgeqHfH1Rh0BJ7v3IkSODTq4zN4wYGYFWIIp+u9KFigv9MIpRyJJ0CbeqpxszCJ3ZSTBq+XAYlDcQhs2qhyFT0qDo5RJeQYuMjZA+MmkNEyQCHOqj/FDhExtOqWK8gSbFOHN8vniwqZcA2sbINgixgsaYRHuXgbSXIsSvEMn5lm3pLp0prUJy9Tk2AaLFjpJMU+5VJbtraJcBP9Kj4hF1icemBqAGaq+nMUBeMmMROamaptd/f2JASp80BRQSfAaGMenmFOjumOrCMFnaBClSA+DcaVCvc84ZWLBDshj0mAoH+ggSXEtkF6q7y2MGXUh0I96d3/3L/fxIf+OxZjj0pypob+qAyHgEigrOlL/oo0FMbcI/AVXBGR3xuVXraOy0+r98wZxIHQMWsdHm2gSMdYIUWEO3EcB/DwFQQ4MrNOioYHn189i9GoRWmUqJqjYlI1HHoaQGXgNgjC+52mb42NL6cD9KYWksVmPS+YfHhlwqZmlAES0J6gwMGohR04XXjIVIUxYEUkRnJhhtgbtF4wWxhBYB6N2JM7Bgmx588tiDT2iG4QqniEU80BXejXeq5aC09e76igbDfNLgIuOwG93/lMzUzaoPEwwkaKscqp59stQ5z7FN2HV+GJMnGa/6sGkmE2e+wLHMiRQuu/9rdOnjU9smJ4jl8TeNwgUzYeEP+CSMdI9KQJfMvxqDqBfwN+c6qBl1msBZ+K0JrfIJuV3NZdJdImMerXMjWCMnRGtfZfsbv261fLwIg9zAQHHysGQw+DgDCykDAgj+pJgfYyKPC29Qkmtm/n7AHLzfh9pYK5Dm0JhNh7r/qsqo+VVCrIRcMZf4od0KCbQOKPxdU+DFRGjnficpcHnFSL/t2t1Di5BYNaOOET5W3pOuOTVloXwyC7Z04TYIIyGX+FB81SyDvR0uKtthy8P8ko3JdpRaMa8JVOiy2cPLoZrgk7z4jMW8buGfKmfc+LXNjy4fdKzfTGRQBxNvDaD2YnblELwZvuoMLFjQQzELLxMjYNQ9FTxnYTeYrMUhKo8HazJTMd8eyIlgzi6oSmIERyxWg8pqms2QVbMJcwKNidMu8twZKPS1SIoeVcRgrl5HNmzpU3Ld1r4hhOxa2kyKn4kzu/OHCt0dMfszJJT7lkG6X1CZBCtZ41ky+ClAI2dOSKSSfjV8paw0q8xtSesnfEL8T7uBKBScf/4pS2PIkrLKin6eDyuQQwHFgfz3qohjsPDyrlzupXspBBi8zUIwUpwV8qD+0wcpOCcEkg61MmYdUVk3tXarYxmZbEqInW0CfCbEQIt15U3JmbJ2tkcgzB8eyYEpGfOxTtS/qYr98cEclzZGg1+CELuykLesFMNMrU85TLNF/Vt4x4Krg1jvC/PNGEbQo+4XGbw0JN8YtNY/gUdYF83GCMWpT5J+IsEnlKKcDwMAYv5UvkUG1BwZmea4Akm6xd2yENQrbPgUdgQWYkH5uooL68mt7XLgMueAs6eOL/NBuuS7HOgLDjiyLFbb2hfdum24HLj8OOBalstvzlyKLxEHXLBcIsa73V5+HHDBcvnNmUvxJeKAC5ZLxHi328uPA84CfAfjyo+JghS8w5+Gj8Uk4FPK0XhPJhqhmIQ/36X1+Db5Qx1ahqalb7pNwE9q+5zTNXyymcrQdS4nztVtGr4my6jbNqI9a9tUhvuS/Ymy+AMyPPDitVb8NOFT0w34M4BWbIA+bnI5EIgDrmVxZcPlgEMOuGBxyCi3mMsBFyyuDLgccMgBFywOGeUWcznwjQTL4OEj4IUPN8G6yqOQnJbmznI/cyAJN82g/daGDBnSzz1d2ub7HSyxuBQ2JS4KVqckwANpibAmZQDMiY+BJPq1ZS/TC4XFMH7hopC1bvj+Q1B9uBJuv2ok1J05E7L8xSxAQkWbgNA2rseOHYNXX30VEhPFHl3B0u233w7Tp08PVey8r7/zzjvwzDPPWOrT/mwnTpyAJUuWnHe7F1qxMzYavKlJ0J6RBm1ZQ/mbzin/Yqd+BcuoqAhYlBiH24mHwbvnGuGfj5yG9fhNP4NZlhQHo+g3/f2QBg0bBhX79vKeun+NiYSeXvxZUFAAaWj5Hn/88ZBkng9YevMm3jfffBNWrVpl+SXlwoULeQvYTz75JCR9/VGgA2WneyBuBkg/D6lvAs+x0/xN55RP1y9m6jewpOLPjqejBdnb0g4vnDwLH9Q1w1HcdfGDuiZ47sRZKG7xwjS8PhDvyeThPZp42jjPYUofnQO/KC6Fpd/5Lvy6/BD8fPtXkDtD7Ej56Mv/DdOvXQ5rfvQY/ODF/+C80RMnwX9+tBHeOXQYnlz3NqSmpzvsqX+L0abr69evh0mTxB5elCZPngxffPEFVFdXw+uvv85bJL399ttw7bXXwlNPPQW/+tWvYMKECUB1VRo3bhxv8k1p7NixXPfFF1+E4uJiPqcdeu6//37O379/P8yZM8dnYO+//z6kpKTA1KlTjWs33XQT9622ml28eDEUFhbCGbTWf/7znyHdDx+D0RZofP64TJajJyEW99P1QtgpfKdpXSN42rz8TeeUT9epXBd+99DGj/2c+q2HiXHRcAa3THqjph468Oaf8rrom85/d6aOr4/HckTEquR4iPCzPU+g8SfiHmEduLnc98fnwWdvr4O7//VJLvrz738Pdn64Ad545in4xT8+AtG4+d5P3ngT3vvNr+GOcblQVVYG//LKb/qZrcGbp93qycXJzMwEEsjdu3dzBQLGH/7wBwZFVlYWbyj46KOPwi233AIbNmyAxx57jIU+VKIYYsuWLTB+/HguStaLdtGnrX7eeOMNeO6553yaaGlpAQLMzTffzNeIvhtuuAHI4lCi7bBeeukl+OEPfwgZGRnsRv74xz8ORYrleqDx+WukGxUp7iwIYedw3zq51a4qR+eUT9e5HKaOISnWfQN6RZmzwv0GluxofHdIcxu0B7gr3oaAoeujsBwdp0eGw0p0zZxGMuRifPrG7xgwuzZ8ABk5Y/yOeNL8BdDS2AAfr/09eHFD8f999mkomD4DBuOEX6q0a9cuaMStXQ8cOMBB8RNPPMGkkNtDQKKN/66//no4fvw4zJs377zIJItlCBfy6rXXXmPAECDI2vhLa9euZVeM0oIFC5jGL78U29jSZoe5ubmwceNGiIuLY+uHe871irbejK8nGrfNRa/EDhQdMHSdyoWhjHWjHHkHB39lRK+I9VO4zx53sbc9EM1iaWu7YVHs1wmlJXj9bk8SPwpDaTQOuCA2CvYgE3qTaCf8SNqT2E8aNDQdzqDQqdSK7koTBthpwzJwt8hjvemmz8o+/PDDDATaQfOnP/0pPPjgg/D888+zxiaNftdddxl9lZeX91m/1BDFINHR/oPjjz/+mF9xTa4YWbx169YZfZNyevrpp+Hee+/lNiIjI6GoyNkb2FQjvRlfDyrPMHS7giZ63w4G+/xKBwJ0XAy7ZOFN4k0IfZ36DSy1aCrz0Z88jnGKv4UvGh5dr8OBRkr362B7B5SEYlAvOXC2+iQMSh9m1IpFYUhAN6UG9wu+VIlcJAUCfJkULF26lMFCAKqpqWH3J1ii+ISElVwj9baBvhgLgYBWxW699VZYuXIlLFu2zGh20aJFcPfdd8Ps2bOZ9nvuuccCalUwGG1Ox0dthdFO/RjL4sbKgYcWEy3KSfnx4HtowtFb6a/Ub25YBQr+1ehPxqitQG0jiMP8yXi9EsvRMQFlfX0zP+TYl2nPls2QkJwEi2+7HaJQo975Tz+Ckp074dQlsir2sZ07d47dGkqbN2/mIHv16tVsYShYJuGkREJIcQyBhJacGxoaWJjJZbvvvvv6jGUUoxAQaMmYFgNUInpoA3J6axlZCN366Z0Hoy3Y+OwDCGtHq4LxbKDAnfPxOpWjYwJK1Glc9NA3tugzroiG+g0s5EqloSn9GzSTZDmMDVEQDPRE8p1pyXydVstOY6D2Xj8AhQbYhoHrT+68A268/wFYW/o1ZI8rgH/73t/1MRvPv7mKigrIyclh94cAQO7PI488AidPnoRXXnmF3w5A6be//S2sWbMGnn32WRbahx56CF5++WWOe3ShPn9KRM3t27dz8K4Ce9UexSqff/45lJaWsnu2detWXv62p2C0BRufvR0PWQh8gr0nJckHMAQOyqfrVM6DrzTsb6AQfY42BneyXu/vEf28GHynIfqQNWgqdzW3YgzjhVyMScji0KP8O/D1bxU4UOsj++4j+hcq8N+U+nQfhZePUZlSMI+vDxCuGVoUAkoYxiaRDS19MlzaPqnPNgY/H4oqMF5pxcHkI0CuHzgA7kz1QD3GMofR5fqwvgVq3d+PnA9br5g6BIROesckKteepAQM5hEgeE6ul6e2CSJwgehipn4L8NUgWtBs7MIbkFubcOUCM/Ufe13Mgbp9XZ4cYEBcZFAE4lS/xSyX59S4VLscCMwBFyyudLgccMgBFywOGeUWcznggsWVAZcDDjkQMsB3smxMffX1nXeH9LvFXA70CQf4dfEhUsgS9BzR+bx/L1TH7nWXA38tHCD5pichQqWQYKE7y+7G4KHY6F6/rDmA9zRYzi/UstBvEMgVc61LKFa61y9HDqg3npGch0ohLQs1QE/GGm+aDdWie93lwGXCAfEawDCWbycpZIBPjSgTRU+c8ivI+BWDTn+m5YQMt4zLgYvHAfUqQAYgpqEAAACWSURBVPKYCChOXDCizhFYFGCoUXpUnH6C2oa/OqTfUjhdLbt4rHB7cjngnwOk6Ele6efaJMtOXC+9JcdgUZWog9524k6ey4FvAgccxSzfhIG6Y3A5cKEccMFyoRx0618xHHDBcsVMtTvQC+WAC5YL5aBb/4rhgAuWK2aq3YFeKAdcsFwoB936VwwHXLBcMVPtDvRCOfD/f2gSfWauaiIAAAAASUVORK5CYII="},34813:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioModProgressInfoLibrary_GetTotalProgress-c2dfe9ae5100fa60bf076bdd500a7010.png"},91837:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},90998:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},55989:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},53632:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioPlatformHelpersLibrary_GetDefaultAuthProviderForCurrentPlatform-8684a5c74a56ec16d57182102488818f.png"},5635:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioPlatformHelpersLibrary_GetDefaultPortalForCurrentPlatform-2f5206eeda17f3ae9b21f090893f58e9.png"},5617:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},86011:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},84486:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQoAAABMCAYAAACVvfkMAAAgAElEQVR4Xu19aXRVx5XuvhoATaARSQiQAIvBzCAws7EBg2mDjY2BuDtJ27FfupMX290/0p31krWy8qOdabmf0y/LcZx2O05CbDfYJB4JYDPPQiAGIeZBQgKE0ICEZr29dw2nzrn36lxo4W6LKvty7z1VZ9eur/b+atc+5+oEhg8f3gm2WAQsAhaBLhCIsuhYBCwCFgE/BCxR+CFk6y0CFgGwRGGNwCJgEfBFwBKFL0S2gUXAImCJwtqARcAi4IuAJQpfiGwDi4BFwBKFtQGLgEXAF4EY3xZGg87OTrhx4wa/WlpagL4HAoFbEWHbWgQsAv8NCChf7dWrFyQmJvLrVnw3YqKor6+H69ev8xCjoqMgtlcsBPA/WywCFoEvBwKd0AntHe3sx/RKSUmBpKSkiJSPiCgogiDBUVFREB0TBdkzMyGrIB2SBiZAdJ9o0RFxBt3jqd676D7sraBcoYTQxy/oplEdFcm+b4f/tK4SgO5WHeV1t8hwU9TtQaISGGo+vXOulDLsiAzcZWShgDCbmAMz2oruzQMhEPBWy++0Iuuij8kjqk7NkeonqF0YmyZ8UIY4zZloFquPC9W5TYcQrOr1cdne/M5SOwBaG1qh7uwNuFZSAw2XGqC9rYN9mqIKii78ii9REEDV1dVMEglZ8ZC3KAcyxqdCS30r1F6oh7amdlYklBlrbDXGCgwFsHino+ybYTyhSwcxK8M5eCRtwiB1K5zh68jhjFn1bQpwEUMI4yZwb8ej1Xl6YO4Rim8km97xHy/x+4yBbb6LuVRG3JXqQTJC9OlSi7BilT32FU53ZWoeh9bO5/qAspV9a0eVVsuO6fnMbYRzKnIRDq1s3plLF28SIVA/9C7b0/nOMUdmqHaMK50o+1VtFN6x8TGQlJMAuQuy4cKmCrhxqRGgBdi3ExISfLchvkRB0QSV3v16YSc5kHpvMtSeIYJog442MUPuATsACeUNq9FgSTAV8CFA9GM4XS/PNeAPcarjDL6O79sgYs3cDcPpaZKDV3TQObfZtx8J0pglMZjDp+7ZoQ1H1fwUSm9FLuoE6fHK8c2gk1UyOqNtrBAp8l7ct1fvCKJVKUK/KRlKnrN4uQfgOm7apXJA04yNCIIPs2NL7dXnLmzbJAIFVSdGCezo9D9FDGrutfNLv5LyiQh0e3WeQRTa92Rdc00L0Cs2MRYyp6RD6+ZKaLreDB0tHdDQ0OAbVfgSBQmhaCLrvgxIHByP4QuSxM12JIkOfqlBBYElqcycgCBCUSibDmFMAjOzOZ9+TqVWs/+CP90pngjJASYgYcbW1ZAjGWbI8ZgOGmppd3m0aBzUzBOR6NWcMlehOuXgxBDsbSODFx3FmINzEYpkGM8xTWr6PNlAObDh6LoJg2s4uPoqj3vtVZOCYZehiMcbQehuTLkqWiANJDF4HV9HCUxWgoy8JBN0rtqWuLYnzuLdXNMMVYdaITm/L1w9VM0+TMGA3/bDlyjo6kZ0TDTExEdDR3M7NNe2cCRBHbS3mkThYUFjUAxw0L7KiERM9vRMqI5IPB7jmkTvMhKJB3V3G4/jCPGG0j4eHzwej4KRMobHAUM6OMvSnqlXbvdhoz6EU4sl36ngj/KroANJGOYxbOSFSQQhXqXVIVNH+sydCrpxqgRQOg/i6OENS2QqQE6NkOXaOijIQ2GtvV1SomcB80bODoFIO2Bnd1ZEjiCoiiIDRTyqDR+jOkUMwrc4ODCjByaPMJFFUJ1jT60NLdAnow9E94qCtsYAX8H0K75EoRQjpW9U3IR2JAsiiHYMWTqIKNrxFXKAkqkVW6ImMb2jYPgTQ6FvbhI0VDTCod+UGCGW3GMaA9fKe4nE44PcTvOUl1H8ILj9+qT4JJhXsACy0rLh7KUzsH7PJxEJ89phRnIGrFrwFJy8eAI+DScjHJP45CmEI0pfMsiBIZO+Euy86AzKEfE9vV8GrJi7Ck6Vn4S/FK7X6Qvhn0HLvVHvsIRoJoSaOrHjS3+ld5KXnToAFk9cAicqjsP241udPUgIogm1ZaKeUhPTYOnEZXD26hnYUvqZOzL1zBJTj1Q1q182LBy7GE5WlsKOk9vcLdXEOf4u5BpzExyFGORg2nE4J9cRgSNX5UjM3IT2S49Md+ThEIzwEemT7Z1Qf6GBcedtnu8qhb4bkWVjo/ZW7AQzp0QORBRtSBgdLfjCTnVIZDCgGSIp5cc9NxaJpROiYgOQkB0HrTdaFaFLR1feLt5jomJg6thpkD94OCTGJUJtQy0cKj3IL0UOpgV4xztlzFQGYu/hPUHDTO2XCn/72DP6eFt7G1RcrYAdRdvg0pVLEcFy3+QZMLD/ICg5U4KvY9CC+NxSkZPc2quNT6MojTDpSm9ql5GSAbMmz4bsjAE8vsvXLrPepH+oEswlxjJvnBDK6cmBatpqYPP+z+F6/XXOnguCEI5v5h/MBKgmA9m5o0MAonEr+3ePfRuq66vh7c/+IGIETSABaIvHBDnj0QmtNwU2dP7SacsgKyUb/rjlD1B/sw5Sk9Jg+YwVcLysBLaXbOF2D014GAZn5MJH+z6Ancd3QG1jjUi4s7auweIXyZTyjWrJtqnQik+LoTovZARLbOqJGvUi4CUFFuqs/vxVRgehowKhq5OvUIlNcZ7yKdHILZu7Vr4oOnLlEUlmW0ObO7doYhPic0REQaFRWzNNWDQCiRFFM0UU+E5RBUUUxh7LlaUlYGTSJXloX8ianAEbn98ON8obOOTqMEMrNSA1cHx/dNHjkJeTB6fOn4Tiy4cgP284PDh1HrQ2tULx8UNuJjRZXg60YPQUzq/s2LvDGbps19ZLGE9VdRUUHS2ChPh4mDRmMqxYuAr++OfVUFZR5gMdQEpSCrdZv3k9NDc3+bYP14BIl+cWSZQco2CM1Hufobc8uXev3rB84QqIjYmF/Yf3QXt7O+v9xIIn4Y13/x3q6mvd3Xiieq7kKN5DFmZYYYb1+JmcsrB2n/QrR2BA3derWUBuLVQTswtevoSzdkSJS+pkN62NbS7SoQYaDyLOxlYdtZRdLmOiSI1LxUt71ZA9IJvl5KQO1ISSlpQOLW0tcLHyAlysuCA6VHqYYzRQMsmuA+2b5wJ1o8+KIDQlKCYwcTUijdDbiGDj1D7DQNDLyT/wZ1bCvT33zWGwLBk1aJ1MGeIgL+6yOJee3Wbj/eZLFCos4ZxEdEBsO5gs2qENyaITWd+VsdV7KIBx3xgJaaNS2KHjM+KgobIRak7XaVCcfZyKJByWzeo/gEnifNl5WPPBGta7qPgAfOeZF2DYoGFw4NABPjYwKwfmzVkAGakZUFtXA5u2b4LT507DP3zzHyGuTxy3+ae/+2d45fVXoKFRXMGhQmOgUlNbA/sOiIjj5OmT8PUVfwuzp8yG36/5HR4JwMDsgTCf5KdlQA3K/0zKf+5v/hcfo/LiMy/Chxs+gOJjxTB82Ai4f/r9kNIvBWrRabfs3AzHTx2Hkfmj4PHFjzNpbdm1GbIzs+HpVc/AsRPHYNf+nSyHcHz+6Re61LtfcjLX03mfb8WQGsvVq1dh0rjJ0C++H1yvqmadGRPUjzBhnc+fYYeZOmEqTMFXXFwcXKm6Apu2bYRLleW8ZNPxKeOnOHV43qXL5ZCZkQlPr3gGSk6VwAcb/gRZ/bNg3sz5KL8/3EBMCw/vh4NItiNw7EvnPwa7i3bBgMwcyO6fzc764WcfsPOqyCE6Wi+3bEek18gho2DmxFkQExMD58rPajxoQVKRS3llGRSMnALpSRlQ2lQKOekDuR1tARNj+0JrazMk9EmA85XnIAXJZOX8r/B27nT5KVg0bTEUlu6HrNQsyMRX+dUy2Lj/L6zXPQPz4b5R0yEmOgbOXz4n+kZnIsLqn5wJM8fOgrS+6dDY1ADFZw7B0XNHYNHUxZCXNQTe/OQ30IrR6NOLn4XDZ4ph95GdMH3MTJiQPxHe37wGLlVVwPj8CfyK6x0HVTVXYfvBbVBZVemKxLlP/Y/jByq3x1FH2PsnDP8hGfJyrnsbZJCDlMMDjbBE9lsP0oMSmBhBdNLVDiQLddWDbtwghuIXXwnBkI3q0RFPf3we9r9yGAp/cRha6lr4PozlHy2G5R//FUz/P5MdWUQ+RETyfJKR2jeZh0BEIeS2Q0N9A7z0yr/AO+ve4WPxveNh5WNfgb6JfWH7nm0cPTz+V09AQlwCbNq6CQ2nFdra2mD9Z59C082bWmeWp1gV0RTJ2U64ePEiNDU1oWNk8XeSv2oZyk8S8ilkfnwxykdj3L57O9TfqGcdN2zeABfLyiAZIwwiAzK4bbu3Aa3+jz28jNtTLoftgPsT+MkDLl389L58uRKqa6rZKWfdNxuSEvrCkZIj8NY7v4XTZ08jiSAmhs6EyTKJyeABuTBv9nxovNkIO5Gw0lLS4MklKzi6GJw9GObNmifrdoq6R56EKKyjOeeCBtYnNg5WLvkKEmEq7C7cBTcR1wWzHoKRQ0fpcYwbOR4ulF+AisuXYCiS+vgRE4RdyHHr8B7timwpqU8SPDx7MUdJB0uKoH9qf+2sOnpFpy27VMb4ZST3hwAGuDkZA+FCxXluOwhJg6IJKmVIKGQvQohweir35o2G8itlUHmtEnKz8mDU4HshoVcCzJ/8EPd9+HQxy+bTaKzRcbBkxqPQLyEZDpQWwk2MGmePux+GZecDRTdUUhPSICs5m+c8t38u2346kgpvZa9UYLSTA7PGz0a7ugn7j+7FKDQVHpm9FALtAcePXP4j/Uv6GOmuLh6QTnylUfuc/Ez2K/2P6njhNl9Kvnw361xXFQViIYtvRKHOIkUCuBJoUqAtBc6F6lQxnplMqcH7Leg4hajx/eOg6NWjULoWVzZJnWKbor46rEh9BuTf1GlHR6c+li9ZDvcMzWd1mnDC/vXVl2HUPaOgV2wvKMLo4tjxYzxZs6fPgcEDBvOxebPnMXnsLdwbPHjFztIoVIPWtlaIj4vnPkcNv5flU/Tikp8zGI4cOwwzpsyApMQkrC/kzDGt9G+98xbU1dVi9NKATpwEBRMLeGU3oycRgUk7pndjpfDTu7WlFd5c/R8wB6OWqRPvg9nT5iBJXYCNSIxl5WUwKt/UuQQxiUVMZjMmrYgllUuVl2Bf0T44f/E89Evqx2jH4jipVGDdflXXF+uQKCgMZ+fBN8KcCHD9559CYXEhHDpaDN/5xndgwuiJsP8gbk+wFB87hES6FXKyBsJXn/wakk46LzQsg0L2KCcUJ3u6Z1A+by92HdgBBzAyIUJY+cgq7o8JVW5tmtqa4Mq1K5CZlomvbHbuA0cKoW9CPxiclStWaSy0bWyX5MDOJT8fPXUEdmG0Q7mdFQtXco5jSFaHyGMd2QPFJw5xBLXswSfYKIcNuIfnf3Ph53D4ZDEcO30Unl76DRiNhLO1EHMi4wEjDbxtACMaKqn90iAhNhHSktM5z9WK5BYTLXC9XHUZt7iH4CKOjcgd6D5FisZDbhGkbXgjCDkH4uqB3mXoyMS5quNEDzr/weArueL9VkpEREH7GJFAkc7MOQn5nT7rmz/UAMQxxQKJAxIhunc0VB3D34qYezFhOg5xGINplytwNDo/lV37dnJo/+jDjzEh0Gn9+pGRA9xXMI1fqsTHJ7gxMHALAofqjPrY2FheDehYMjkKlmkom15aPkYsLiaWMihfUzC+AIYOGYq5gjomCipRAdyTa4OQ/Zk6RfLZULzhRgN8suFj+Mtn6yF/2HCYd/88+NrKr8G//+43YXWOQ/I7XLiHI6HJ4yfjVmUSk8K2XdvQoFuh9MRx2LFnO29hJlLd5QrYvmsrtNKlM0M/iq6oXK+5zmRKpEh5EorqHKMXCwhFdFRicb4IG+cKprPBp0grMUHcQlyNtxTzVTQdfYnIT9+KhaeVVVyEzPRMGDd8PM/TOYw4zw44A6OHj+GtDR2rxHGlIjmxOZG9KXlyRVaXAylZTtGeGA/dU0DJeSeZmdhH6FVTU8MRcl0tjhV/K0FbnctXL0NzSxNeEUpHfbKg9Gwp5tDyYcywMbzFKMMtF8k7eaYU9uJVrXEjx8GY4WORMCp5a9bc3Cxm1LNQ6iQlHzcIwSQUeV5QkjKEnZuXZJUJ6e0Md9+VczhGFxFRUHOKClRWPIA/CgPF9DT7uEJQ+MqDxMngu+xoU0PfsS4lvx8nPmtO1QkZnNFSKhrJMYUcvl+rqeJvuYNyYesuMhBxJYKMkqIEklGHP1Sjsh4dZu8BjBp4zM7AuQcjmeUM2/hk1A8cMBD69O4DF9D4WL7cWqzf9KmQbxYzmSVlzJg2E8bcOwbW/nkNHCs9BgvnLYKpk6ayLDIqKvTrvSCdPLK60nvcveNg7uwH0Im3caRz/EQJ6twbljy8FIbmDXMwIZ09kVRm/0yovFIJ//brX3CU88iiR+DJx1bAL157haOoStzW/L/X/w3S09LhkYWPwPJHsQ7bmqZUi8RAJblfMg+DnDw6OpqJURXBm+ag8AB+pePeHxKSzdBWiEpCfKJOfvMB8hO1n5YZx4uXLsLksQUwYugIJIlz0IZkdPrCaZg4ehLkDRzC245WtBEnZDNMQqxv8pZsoc9N3BJQiUfC4ASmikSwoRpTXyR8Ok5b2mhMxNbdqONIpwxzO3k5QzjC2rhjI0eU40dNYHkXyi/yOZQ7I1J5vejXkJqcBgvnLOI8zmu//xXcaBA5M70A82f1j9JTkoULXM/d0BIrPQG8sBvjdipkf54DEXyNjCjY3/A/TGbyi/wUnTUqCtkfv3cSSRBB0Jhk/MNXO0iBjgDQFY/rp2pFGzqfWF6lmrEJRaKuUBy/V16txKTkKRiWdw/mCVZhmHwWDTgD+vTpgwlI8WOW4ydLYO7MuTBnxhxMwPVhGUMGD4H//NO7bAANOBEZ6f1hwQMLMKm4Ra9wjItc3pIxF0LOTFFIwYQCNJYO2Lx9M8svQWdn+TPv5wQfy89F+euEfJ1NJ2ywPSXiqIwfMwFysnN41aYSg45UiSs0yR49agxvnYbkDhVqeP4lnLXec1HvHW69yyvK2Tnn3T+fnbUZV/yJ4yayFOqjGq8GzJ0ldUbDpTlgnd9/lxOoRCjFuF2gfAb1zjkT1CsrMwuWLMI6jNq4Tl5f78SJNF2+hDF/gLc85BhDc4dx3wePFOmIQVyf14MzRigt0mAeanb67Cm4f9pcmDVlJl99yh8yXDQkuxPsog1EXY0ivM8gQdCklKFTUi6K8C+nq1Uq8pXdud5kNCzkd2KS9xTMnDQLpo2fzjmpYbn36L5LTx+HGZNmYt0M6B3TB4koj+sOHz/MW6mySxdg2OBhPJ8XcXFJSUzmXA9tXytoYcO++qf0h0UPPAxHTxyFsxdw283dUq6BLgQ4eSsz4tTrHfmJxCHoaoY6Lk/U0ZwabFeBgpnMjCyg8P/juk4UgVkD/OUov2LxV6T0wju76LP6HhUbzcf5Hev4M75nTkqHK0VVsn0012sZ2CYg25HsaKPuvfXvwba92zCMTEXjfJBJgyZp9bo/8Pk3murh7XWr2TmmF8xAx5zIWfjY3rGs5xYMnYm1J2GonYi5BIqE9CtGmH9Gegav/NOnTIer1Vfh92t/j5fWLkIA6+sb62H1eyT/GtbPgInjUT7Ki+kVw4SniiLQvUV7OImXNzgPBg/O1Vcz0tLToQEz5rSvpzIZCano8AE2bvIo8zIj7VLoSgnrPQH1TsIf7DAxi9f12mr4HSYuaWWdOH4S5x/o0uy6j97HxO85qG+og9Vr/4A/9kGdp6LOhElDPeocDcUlxbB5x2bULxdJYQkb7HsfroXG5kasOwybsd+8QXmwZKGs++g9zPQ3Yr9yrPjWgKv/HxHz60jWhAmR1oatG+DIiSOaOGmMZDf6vgyOOmmczkuDh8euXq+CTzd/wu0Lxk2Bk2dPiGp5nrwziGXcRH2qa65x9VlcPChyaetogwvotFQ4yaiiVtmJ8oVQi+xVvDz+l+14ExmeQ1HJqXMnpTMD2lIDrPnkP/lq19Tx93HE8/muTej0R5ADOhFv0SeRTTttM86KcykH1IZRDbU5jLhuw0T4oAGDmDAI8z99ug5vm27geo5i6FYBVE68i0Qk16Es5jxJGMxxdEwdx0/qPNHOeKl2Pu96Hnw+BPweAHT+/HkO9Qc9kMU/Kacbr2i/xndoyvsoeK8kRxWFBjly5TC4fKAKrhy6BgNnZ8G4Z0bChr/fBs14M5EapQJAzIo7/NLfGRA5zcYsa5ZVOyzZhCOVcAM2KoLYNxK0buckjzKhdZOzH4kOqk0Ep3gCf0c6r870VW4BPf06N0bJChbklsYiHO4IKUufQVsOigzMA0qkjBYMypWduk7QGrq0UHqpYYTQ0xdSNSEakxBnGPPuMgHNPsaqL21Zv5m2q+xcG7zaZrgqjDyP6MCxdQWNPG4aU6jPYQ3A2M6RSPRb2s7n5uZ2CVdkWw8yBVxhiQTwug5OOi5tlINAho/CrYV5ayltM4YsHMT3TwyYjn+3AqOJg78+xvu1mDhKQgorN28eYTwlTWpgzLBLIWYSga5XiBiEwuLCeJPXeUN6b4iDYRlI4BtUbc5wuHO7IpIu+/OMrStDd1zPZQgu5/QalZRnkob0acNp3USjVAhFCGoXYvpl104cwsolEWj5ihiYhUyPMsEI5y0SP7NaEprWyzN/LoeVX7Tdunw49MSJtsr2VS/uedREJD8EE1OY3IM5OV0QhNOrjzGHmJzIiAI7V1sFEQLjAQy9o/C9ox0PGI5/A/8oxsFfHeOfpdeX3YDTH12A1voW/FGZJAmJl6JKcR+7wXKMncfp1Z5K4araqNnjd4EQEZCmDjkx5rg1RGGd113hMpBQ1t2lsxuV6qMh0FcXFwMZ0VIo3X3m3qx2Le6mkZmfeayCDHSeoGvvlmGD6inYYlkOJx7IK0k8TaQkHNW3PN0V2XAT9ftUSQRaVyXLUE6GO2Hx1fbioBI6WjAWAC+A5jANnSlfJxxCRgxqwRKHNFkYVKEXSVXtJSsvITnuoWw9Anbwmzuf+siIAoVE4S9IKd9AN7oQUdCfw2uP7sCIQiOis8m1Z+qc7C1WxybEMkBqwE40IQ1HiQhiUqxQSVEDRYd5HU9yHxPHg3YLLmeVyPBKEsKhvcCpifbMpssYvaGmtAtHlGxtGp0p10MMfF7YeilVOZ/51SXHM5AIoo+ubEY4sOHo3qsbppVTklvHWqJj5+9OUEN1aUws535/w5GvmDAeahAyDPD6iQtfIiaJo3ZuT/jgNNHMYF6JcDuu+OYlITH1xmR5bM0zTUKGbiM+RGTDEn7xFhlBRPKjr67mnOoiIwoCksgBE4S8AFAQgTdf0XZE3fXmsJ4DVlhCUEatVnyTIOTpOt/gmXQTcO81Yj1ZaiaVPbn8M4SzelByjcUz/87lGcNgDKNw9DMVN2zINQB3xzo8VYe9entEBhmwgl7hKXX3coN2M8POgkhVewN1Kld98cm9zfLTSYd3whOkNAM81cDsQxCM7suDL99XoZMk4rK87sZL1qqdlOdAazqZBM5wXNc4XTZoLCx0WrjFIdQ2Q2MqScG7MBqLqZ/jhquPiBQ844mkr8iIAiVFUY6CLoUiS/A9EvJSp5p8kWNwvMp0Wu14BIS6fUy2d3R2T5bOMbjaOZ4T7JBy4lmMgQSfT5YkV0FGRXmUo7Ixhw61uww02PGFGEeWEO1JbunujHbaoc0pClfv0dWlaPj+lCeKeTC91ejTA5PYGniIQI8vdCgSahV0JT9djiTvtenKMrVAMV9ud6aoQ47HmBsxtQIntcryguYYCU6LCivUnLsHS9/46hOJkbbCOyPTVsyxeOdez6lho6p/c74NRnaRM7UxTSw03JH49B1pEzFR8KUtuuTFZIHwUT6T8wsqfDT8Tw/YY3kuMAUS5urtWhncnuuEhAoGEu1ZOcMiZPig7NXtDSEcPsgBQrC/y81NffizWxtz5QkVsQiO8RivYeg63DfHrDEKdZ6Bj0cXTejKDT3kxk4jZavPrljAlGc6gYoXvEZvtFdy9TSG1M1JXyhdWQ+D7IMWAxV/6CjSK5gF8MQI8pGkJZlI6OUm+XAkEXSDlDyXOcW0fTUt0jZc02nMnZcwWL0Q6oez76Ao4hbODesznoqIiIIAK31X3Cxii0XAInD3IRDZr0fvPlzsiC0CFgEDgYgiilsJgyy6FgGLQM9DwEYUPW9O7YgsAt2OgCWKbofUCrQI9DwELFH0vDm1I7IIdDsClii6HVIr0CLQ8xCwRNHz5tSOyCLQ7QhYouh2SK1Ai0DPQ8ASRc+bUzsii0C3I2CJotshtQItAj0PAUsUPW9O7YgsAt2OgCWKbofUCrybEKBHRtBDkDIzM3v0sC1R9Ojp/Z81OHKoWnw2xnV8fkcZPlntjTfegL59xXNCuiorV66EqVPxsQd3qKxduxZ+8pOfuKTTX/S+dOkSzJ8//w716i92WVsBvN7yLBxsfglqm37D7/Sdjn/RxRLFF434Xd4fOXxKSgqMGTMGMjIy4Ac/+IEvIrdDFH5/Lcvs9J133oFly5a5/sLWAw88wH8l/fPPP/fV7040eKF1Ifxjx2JIgD7wq8BGWBD1L/xO3+k41X+RxRLFF4m27UsjQE/fWrduHUyYIB6YQ2XSpEmwe/dufNJXJbz11lv4iIVEWLNmDSxcuBBeeukleO2112DcuHH85C5VRo8ejX/6XjxIZ8SIEXzuyy+/DMXFxfyd/or8N7/5TT5+9OhRmDlzZtAsfPjhh5CamgoFBc5K/fjjj3Pf9BeqqcybNw8OHDjAD4T++OOPITtbPEndLF3pFm58oUyCIoblnffBTjgB3wn8B7watQF2Rp3g9/8deIOPUz21W9k+DTI7xRPt7mSxRHEn0bWygxCgp4pRWD9w4EAgZywqKuI2RArvvfceE0JeXh4/6OnFF1+E5cuXw/r16+F73/seO7xfoZzB1q1bYezYsSStx7gAAAUISURBVNyUohZ6fB/9OfrVq1fDz372syARjY2NQGTxxBP4zFEspN/SpUuBIg0q9LiKX/7yl/Dd734XcnJyeOv0/e9/308VV3248YUSsrhjAlyEavhp4AO4HMDHGIrnc/L7lUAd/CTwZ66ndr3wr1muaX0B4vDTnSyWKO4kulZ2EAKFhYVQj4+CPHnyJCcAf/jDH3IbCvWJROiRi0uWLIHy8nKYM2fObSFIkYoqtAV58803mSyIDCjKCFXefvtt3n5QmTt3Luu4Z88e/k5PUhs5ciRs2rQJnygXz1EPPg/nlnS7lfFN6RwG26EErgbEIzO9pQqPUz21ux5ogIKOofBWy98D/vnrW9LpVhpH9vcobkWibWsR6AKB559/nkkgHZ+e9qMf/Qi+9a1vwc9//nNeqWkl/+pXv6rPLi0t7VYsKefQG5/TGqps3Ij7/wR8rCRuPyjSeffdd11k8+Mf/xieffZZzlvQg6wPHjx4S7rdyviGdGZAUeAcxg/yWRaenvBBnnAAzgG1q4YGrn2kYyI81T4Dfhe9/Zb0irSxJYpIkbLtugUB2hYoAkhLS4MFCxYwURB5VFVVccjfVaF8BDkqbQdope+uQgRAVz+efPJJePTRR+Ghhx7Soh988EH4+te/DjNmzGDdn376aRehqYZd6Rbp+EjW2cBVmARDMRdxUm87zHFS5ICPZOZ2iSCI78OoIngnend3wREk587FKndMZSu4pyBQXV3NoTyVLVu2cEJx1apVHFlQYpAckwo5IOUtiCDosmpdXR07Mm1TnnvuuW6Dg3ISRAJ0WZQSn6qQPi34MOhr165x5GNGPWbnXenW1fi8A9gXOA0zYQT07wx96TijMwlmwSigdun4mUjir3v9EloAH7pzh4olijsErBXrj8CZM2cgPz+fQ35yfgr5X3jhBXwSeAW8/vrr/AR5Kr/97W/hqaeegp/+9KfssN/+9rfh1Vdf5TyH6dD+PXbdYteuXZyoVElM1ZpyE9u3Y1agpIS3JDt27OBLvN7SlW5djc8r5+OogzAIUuG7nUshuzMZ05XCTSmSoO//1Pko11O74qgLd5wkqO+IHlJ8K9ek/6uTZc+3CFgEAF5sXQRPdE7lqxs7oBQOYk5iAm43KNIgklgb2Av/N/bTboGK/tx/tz2kuFs0skIsAhaBiBAgEjjfVsWXQJ/rfJATl5SToO3Gy1Efw/sx+yOS012NbDKzu5C0ciwC3YwAkcH78MUSQrgh2BxFN0+uFWcR6IkIWKLoibNqx2QR6GYELFF0M6BWnEWgJyJgiaInzqodk0WgmxHwJQp7abSbEbfiLAL/wxCgu1z9im8Lujfe9Yh5P4m23iJgEfjSIEC+TXe4+hVfoqC75uxDiv1gtPUWgS8pAp3Ad8b6FV+ioN/R0/bDRhV+UNp6i8CXCwHyafJt8nG/4ksUJIB+5RfA/yxZ+MFp6y0CXw4EmCTwP/LtSEpEd2aq0IR+PUf3haN87sQWi4BF4MuFAC/25MIYSRBJRLLtoBFGRBTUkATSi37yS386rKmpif8egL0q8uUyFKvt3YkALfDkq/QnBsmPI9lumEhFTBTqJOrgVju5O6fGjtoi0HMQiChH0XOGa0diEbAI3A4ClihuBzV7jkXgLkPAEsVdNuF2uBaB20HAEsXtoGbPsQjcZQhYorjLJtwO1yJwOwhYorgd1Ow5FoG7DAFLFHfZhNvhWgRuB4H/DzugZaIrKE37AAAAAElFTkSuQmCC"},86318:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},50425:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSDKLibrary_GetLanguageCodeFromString-07f6fa34ac42129bacc95488775b986f.png"},11861:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSDKLibrary_GetLanguageCodeString-47da87bf1ca6d0b3444e4ea1eaac742e.png"},43465:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},75517:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},84733:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},90298:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSDKLibrary_GetProjectInitializeOptionsForSessionId-794e92929faeee6a2fb661456d91d1d7.png"},25047:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSDKLibrary_GetShortenedNumberAsString-4d9bf0258754df026d7a2082964ffba4.png"},52987:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSDKLibrary_GetTimeSpanAsString-b09ea2de257e9f6134e49e2bae984be6.png"},5608:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},8421:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSDKLibrary_IsValidSecurityCodeFormat-f2b25b06b6647d66e1e55a880bf08f59.png"},31773:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},10851:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},33338:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_LoadModFileToMemory-880f5d8c1ba728bf068807cb3559919b.png"},98688:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitModChangesFromMemoryAsync-4edd860ab7540b93959c8c0f7f2a5137.png"},89146:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory-4f094cc73d91d2c82cbefe34bc1c172f.png"},64587:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync-5d1e90118f4f934bf9d50957b51391bb.png"},63754:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_DisableModManagement-5f0eb0a41951b35be46cb68387079953.png"},33590:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_GetLastValidationError-248302bd685ccf133c8b35edafba9bb3.png"},40309:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_IsModManagementBusy-124248b31972e2a2a47932b93466cdda.png"},27331:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_IsUsingBackgroundThread-09942c052a7a41c9f8586bc302807014.png"},9981:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_AddToTempModSet-bdc1c1978e245ba3122b0de58c45c5d0.png"},30771:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_ArchiveModAsync-301820098783a60cf0bb90984e24ea48.png"},36043:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_AuthenticateUserEmailAsync-d8860759b43511919fe6a4dd23b4d16b.png"},69428:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_AuthenticateUserExternalAsync-20730b90c571ce00ba33752eab60040b.png"},73239:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_ClearUserDataAsync-c2ead944b1bcdee2aa8612351796be8d.png"},50203:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_CloseTempModSet-91ea6860470e77c26c197cb71b0b9c3e.png"},58799:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_EnableModManagement-9fdcb415f8dac2cadba8b3ef4619e8ea.png"},38798:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync-959793d6bae5805e609d6948f6071617.png"},10208:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync-75895154b0ad395e68b9055871a93dab.png"},30612:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_ForceUninstallModAsync-f67b8d699d627e8c5788ca293d0194fd.png"},97423:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetDefaultModInstallationDirectory-358e4440ead73240cbcc7e1351ddd81a.png"},87367:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetGameInfoAsync-c33df4da02b4806e818624cea3158637.png"},86039:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetLanguage-825d1af09bb500dac57886a5a78ca64a.png"},68156:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetModCreationHandle-556d4efd18f7c7c76c23437062cac4d2.png"},17784:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetModDependenciesAsync-bb9a17927f1c969c6787d4dd9d42c76e.png"},21913:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetModInfoAsync-c141dbb87248abd169f33ef254251c9f.png"},59484:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetModMediaAvatarAsync-1fdb3c58a27f52670c442f3aa1bbf016.png"},80586:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync-a0630066f06cad861a8769948f32f175.png"},24398:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetModMediaLogoAsync-0a0a1ed024a69d97fcc0a10bdae9b811.png"},57363:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetModTagOptionsAsync-ed35670d985059ef2f2775e597d94fe9.png"},79944:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetMutedUsersAsync-b889b19125d0360cf4d520ade2ab18c5.png"},93492:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetTermsOfUseAsync-c6e22c2b2868122144640004d2394b3b.png"},99183:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetUserDelegationTokenAsync-80a54ec053e5b99bafc5bf071b5fbc97.png"},91533:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetUserMediaAvatarAsync-2a773ca98cccb4b7e926aaf48bc7ff7e.png"},43355:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync-f9b903e0e2833d3380b115b75ab00e07.png"},59125:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_InitTempModSet-29cf256b95cf42b433c622b1cae7f884.png"},1735:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_InitializeAsync-11220774e42901b7ce5d83720c58c28d.png"},1655:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_ListAllModsAsync-316f57d416ba0ae025eb48f00d1c9aa2.png"},25489:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_ListUserCreatedModsAsync-ff9ef2ec2b8111cc4674281c005b4d0e.png"},34935:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_ListUserGamesAsync-3914aa13ec1f36ad56d3058600385d7d.png"},43781:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_MetricsSessionEndAsync-830d93bd55175fb12d6ada839686ad5d.png"},92702:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync-79b62f72079482576f25788aa013f789.png"},91175:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatOnceAsync-5bfbdb4e8f6cb7d8572b81c5dccc84dc.png"},35372:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_MetricsSessionStartAsync-651730c41eec661e03832ebfea99162f.png"},87007:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_MuteUserAsync-95092e29e2790d8e96bc2cdc90d1ffb1.png"},79630:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_PreviewExternalUpdatesAsync-2855ce40346338726cdf2fc3f6d4c10a.png"},21296:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_PurchaseModAsync-1fc3c7edad752491c5d369a742e7d265.png"},16111:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_QueryCurrentModUpdate-ca721cd3920c490f3d8f27a0e87a9721.png"},63699:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_QueryTempModSet-0ba976289a53dbf96b322b103c7afc21.png"},70005:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_QueryUserProfile-290a47c2579a6de4b0e8b4c843dad5cf.png"},13821:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_RefreshUserEntitlementsAsync-0c70260b80c34c71c10bf74061fb4ea2.png"},74399:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_RemoveFromTempModSet-51ca3fcbbd419cf6e470b1f3f159aa84.png"},57110:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_ReportContentAsync-dbaa9fa77a041509aecb7a3e17816909.png"},94989:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_RequestEmailAuthCodeAsync-72567693be0c3a74f8829f100dd7b9d5.png"},40275:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_SetLanguage-64c43dcff334858421a96bdf06ba16f9.png"},85619:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_ShutdownAsync-ad359e71788c08397a38cf61bcb0be00.png"},70604:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_SubmitModChangesAsync-4ad4759be516c2f3d9b45e350c3eaab7.png"},69256:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_SubmitModRatingAsync-a0e171b1e0c563c3cfdf3ad28389564b.png"},8127:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_SubmitNewModAsync-8728a8ce4666e4a8d6477ae0f4a43b03.png"},95258:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_SubmitNewModFileForMod-24f84c6a68b38837f8b0dfd6bf081b98.png"},8274:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_SubscribeToModAsync-40e6cf4f6781ca88098119205d7d7a3f.png"},2124:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_UnmuteUserAsync-5072928585d25488a648dfc7210fb4e0.png"},65298:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync-c749be66fec80d0e8bfe214ade7abbcf.png"},83587:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_K2_VerifyUserAuthenticationAsync-5a26791679686730e9dcc7880e18c978.png"},25607:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_KillBackgroundThread-7568cfd2a189b287b269ceec5db5d079.png"},39846:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_PrioritizeTransferForMod-597a4fd0e4c6a56d4264f3a2df028b25.png"},17253:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_QuerySystemInstallations-dff87f3a0a9c23416e81db47ca0f25da.png"},46391:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_QueryUserInstallations-42ae147ec3c47d4b1f17ba58476bf09e.png"},85256:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_QueryUserPurchasedMods-066afb38d53390a7926561bafc794593.png"},49498:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_QueryUserSubscriptions-73885d17f3df616346f77111ae8b8ad1.png"},51672:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_RunPendingHandlers-50f98a4a74afd398ef05e160d7717e88.png"},23059:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioSubsystem_SetLogLevel-183d6fd9ceeb266aefcf08587b244729.png"},54294:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioUIEnumLocalizationLibrary_FileSizeUnsigned64_ToText-4b00fdbdb167e45ea0acaffd8e54b333.png"},49443:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioUIEnumLocalizationLibrary_GetLocalizedTextForEnumByName-5849fa04c36e80e669f1faae64312cb1.png"},6841:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioUILocalizationLibrary_GetLocalizedTextFromDefaultTableByKey-f07c4cb6bbe86f7285e78f7564f65111.png"},34323:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},13496:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},88015:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIsAAABMCAYAAABd9ETzAAALQElEQVR4Xu1dW28U2RGunvv4joUhYBa0DmIdVsAmu9IKXvISJRIRCKFkH5wNl1ce91/wK/IQEm3yBC8OAlYoEqwAKU4w4NjIFzAysdYXfJnxXLt76zvjMx7M2H2659aTOYWa8XRXn3O66puqOlV9uo1jx47ZpElLQEECAQUezaIlICSgwaKBoCwBDRZlUWlGDRaNAWUJaLAoi0ozarBoDChLQINFWVSaMVQNEZimSRsbG5ROpymfz5NlWeJTU2MkEAqFKBAIED5jsRi1tbVRMBiseDAVgQXgWF9fp46ODjp9+jRxgo86OzspHo9Te3s7AUSa6iuBTCZDy++WKZ1K0/z8PI2Pj9PMzIz48UrdeB2R4SWDCxCsrq7Svn376Pz583ThwgXav3+/AMeLFy9oYmKCpqen6e3bt17Hpc/zKAEA4sCBAzQ4OEh9fX2Uy+VodHSU7t69Sy9fviTDMKi7u9uTpXENFmlNzp49S9euXaOenh66efMm3b9/3+Pl6dNqLYGDBw8K4Dx79oxevXpFCwsLwsrARbkhV24olUrRysoKXbx4ka5evUrPnz+nGzduaHfjRuIN4J2cnBSWfmBgQIQNiF/gmgAghAyqpAwWuBh0dPLkSRoaGqLhfwzTnTt3VPvRfD6QwOizUTp06BDhR9/f309LS0sUiUSUXZIyWBCjAIVXrlyhW7duabfjA+V7GcLU5BTBLSGciEajIvbs7e1VakoJLJgWI8o+evSo8He3b9/+oPHBoEEf8+ysK8ABlEGEhrO84f4Hk/+z+BMb5kfYLN4nPuU+wWMX+TDxLuUBX5p5Vnhb4AMpfWOFkoLLMcEFHTlyRABmcXFRpD0wvXYiJbAkEgnR2OXLl+n69esij7KdTC5gmxxpW7ZBNqf6JDigUyhdfhefJcAAkCRoBHC2A8veAhCO5flksWmwOOl21+NTU1Nks2yhV6lfpwYdwYL5eTabFY3eu3dP/F2O8kaALGxsWSwyeIpWAMV2sJjblF+0OKUAKgWNAFMBMAJY3KjJf+S5HU2VSQCpD+RioFPoGUm83cgRLMlkUgRByKM8fPhwx7ZstigWKxA6FBsDBsiFSgvfC9ZF7iv8Xdhf5CvySJAVQFIEHIDGYBGbBktlSOGzARTIPhwOE/SM/EtFYIFfw1QLs6C5t3M7tiXcD7ZN5RZAY1PcMunTWISORELUzVZnhRU9k83T01SWfmBLBJ5SQBTOBxgkkDZBJvaiTUsARYOlYqwUG0BpAHquGCyIT2CegEKhrZ1IHpNoYTd0wLDpi844/ZAz6da7BL1IZehnsSh93hGj33TG6HEyQ+OSX7Zb2k65fUU0Vk9YrdwSdJvjfyqlGUc3hF8+CBG0G4pyXuYLBsToRob+srjGsxduhwOZmWySvltL0td7u+nL9igtraVoL7u5qTyXEGBONPlWAo63KAAsqCdgPo7PXTeOU0Rky9vxeJgW2KL8dWlNTKEDOHfzM8t//XlxlRbyFn3WFiWeddNQR5Qim6fjfNkPJFdosnDQcQyax5WMYFHghqRR2A2pjmDxCvPD4RD9eyMtciPlKM07R5Jp+pj5wNMfCtBXbGlqNiCvF6LP24ptnGQhEAeT4JKQnPsvxyg7KR/7EcP0slkRLoppMBKkz6KOntHlSDS7owRYvw21LGscfxyPR8VMpxwBHp/y8WXOmUTgYpjGsyY9zeibphyV2yCGmln92Vye45EYxRFqlLm4OAPkF+0xmmG+NmaY4Pjm20RGZHM11U8CKhZFjsYRLCLA9eCHxlI56gsH6Q97u0TgWsiSFMxdjL//kff3cZzyn40szbN1+Xsiq4FSP4y81xP0qwKamgUIGU7k/YuB8DnPdr75Sa8Idsf4+2A8Qj9niwKgPObvC5yYM01OtDVIULpbdQnUDCwYwv84o/vdepqOx8J0rqeDvu7dyuDe5v0AiqbGS0CkJRSopmBB/8lAkB5z4Po9b/KWA1FZ1kBRUI+/WBzBIn2ZTM75a/jVHQ1uAjp37lyx0ZGREXHfaitQ9WIWNSvV9DJFnQT3pUrCcpaWIEX9OlqWlhCWjy8ykf+E8qFBMgMf8Wyxl4K0TEHrDYXy49QRmqjryB2XgszOzlJXd5eoOKsGQnW9gip2BsuCpS2ScLshtkbRmvUl5UKnyDDfkZGb5O0N2eGPeDtKdnAPhfNP+TbWxxUNT9z1yJZlfW2dDh8+vGtb2rKUiAd3i+GeVD8QLEoucooCuRkKpu5w2QSg5V9s9jVZ2REy47+mXPgUJbIrFApzEdaeZp5ETYfe0mDBQqsTJ04oC3hubo5ev36tzF8JI1wPLEowdZdBkCxpyi58ZwDZga+EiwrSLK0EhmiP9Sc2ErlKutWWZScJYI32mTNnlIX75MmTuoEFMUog/f02oGwNFZbGyE2RGTtDAXucIdJPq8bvqcf+lpncpThVwwulrJhqY8pS14yOEkAwa+TfFFxPWeIyTH5WBL0BOyU4MsYnlDJOObZdjqF6U2dP3fv/JCzFHR4eVh5oPeMZzHrsEAecHKOUtxRcz+Hjgs+IiGuI2hMUs0eVr0cFIKWNtXTMgmWcY2NjysKtJyOmx1Z4QASzAVr/oGuLOnhW9FMxjbaMdgGUbvtvHLO4r9urFoqV3FBpFreeAmvlvpBHwfTYjP+KI5BOFoVUFa/N4u/Yj+PgC9nznoHiRsYtbVm2CwqLri5dulTc/eDBA3r06JEbeVaNFwk3K7+Hp8cnedbzOw5mp0UMY4eQZxnYzLOM1jUxp8FSNfVWv6GuwCNK5N5RPsgZ3NhpdjC/3crgZv9ZNaDIe42crkCDxUlCDT7eEURKn7fts+EqaK60OKwy41VL93dxun+TVBptsHx194oSQKq/sMSGaG11rXrpfjTqdqqFMfupEKYow9ZjU1zb52jMKrEkohDG9Q2krQPphxTcLIRZXAjLRH7JAVxPxYWw1tNsda7Yyw/fESyl7kc87WBzhaLTkP1YCHMacyselx5DxSgo5Vm8CPHDQtjWincUwlBJhcUBn80xPgph/PAHL13pc+okgZqBBYUwFLrer5huXVWxEIaCGRfFZCFMvwKpTpr30I0yWNz6uHoXwjxcuz7FpQQcweJ1FlQshO242rnyQpjLa9XsJRIojT1V41BHsHiVMApcSEtbVP6m5/cKYcxTSSHM6xhb9Ty3XkLKyREs5aJklc78WAhrVXCoXLfKbEh56owO3bgkPxbCVITWSjwqACmVhyNY8PBBpIXxdCC3VK9CmNtxaf73JQD9qryPyBEseGQ3npPq9IzUnRRQy0KYVro3CWwPI7CqAXp2IkdzgYcl450120klbnHqXB+vvwSk3kpdEPSr8jh2R7AAcXBBKo++rP+l6x4rlYB8AGFVLAsGg/U1uF/VbZBb6YXo82svAegV+lUhR8siwYJHsu/03H6VjjSPPyRQ6oagT+i1qmCRgMG637yZL6551nGLPwCgOopSfUGP0KcqUNCHkmUBI96nh+eXJBNJARhNzSsBk9+nAD1Cn27ek+g4dS4ViUTh8vKyeKsZ3iYh45jmFV1rjFzeiwTXg5c6AChurAqk5Aos0h0BJHhfIsxYJBqhUDBUdE1us4KtoarGXKUECD5hTbKZQoyC1wG5sShy9K7BIl0SOsMbsACaTDojknbIAgIsXrK9jRHn/2+vyMoKkPCz+ZF0g27wihg8DMAreQKL7AwdY4Npg5WBecMgyyXxvA5Qn+dNArD++NHiR42EGyxKpVQRWGTnGEg1BlPpxejzaysB5dlQbYehW28GCWiwNIOWfDJGDRafKKIZhqHB0gxa8skYNVh8oohmGIYGSzNoySdj1GDxiSKaYRg/AtmWIqY2IPQYAAAAAElFTkSuQmCC"},27889:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},75196:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},68337:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},42837:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},99531:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},76134:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},88442:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},90214:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,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"},88754:(e,d,s)=>{s.d(d,{A:()=>i});const i=s.p+"assets/images/nd_img_ModioUnsigned64Library_Percentage_Unsigned64-f7f1acacb3174469af6f03459bea230a.png"},89948:(e,d,s)=>{s.d(d,{A:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIsAAABMCAYAAABd9ETzAAAKPElEQVR4Xu1dW28UyRX+errn4hu+7BrExbCwiMsmMZvNbiLykjwkeSARISgJElEC5JHn/Akk/kGkRKvwkqeAFG0QGKE85KYkkBi8wQjbBIJBgK+MPbfu6Zyv7HZmiXFXt2fG01BljcYzXV116jvfnHPqdFW3tW/fPh+mGAQ0EEhp1DFVDAIKAUMWQwRtBAxZtKEyFQ1ZDAe0ETBk0YbKVDRkMRzQRsCQRRsqU9GpBwSe52FxcRHFYhGu66Jarap3UzYGAcdxkEqlwPdcLof29nbYtr1uYdZFFpLjxYsX6OzsxOHDhyEJPnR1daGtrQ0dHR0giUxpLgKlUgnTM9MoFop48uQJ7ty5g4mJCfXjDXQTVyIrTgaXJJibm8PmzZtx9OhRHDt2DFu2bFHkGBkZwejoKMbHxzE5ORlXLnNeTARIiK1bt+LAgQPo7+9HpVLB8PAwrl69irt378KyLHR3d8eyNJHJEliTI0eO4OzZs+jp6cHFixdx/fr1mMMzpzUagW3btini3Lp1C/fv38ezZ8+UlaGLilIiuaFCoYDZ2VkcP34cZ86cwe3bt3HhwgXjbqIgvgF17927pyz9nj17VNjA+IWuiQRiyKBbtMlCF8OOBgcHcfLkSXzyu09w5coV3X5MvRZAYPjWMHbs2AH+6Ldv346pqSlkMhltl6RNFsYoZOHp06dx6dIl43ZaQPlxRBi7Nwa6JYYT2WxWxZ59fX1aTWmRhdNiRtl79+5V/u7y5ctajZtKrYkAXdCuXbsUYZ4/f67SHpxehxUtsuTzedXYqVOncO7cOZVHMSXZCIyNjcH3faXXQL9hIwolC+fn5XJZNTo0NKT+N+X1QICpD+ZiqFPqmUm8tUro1Jk+jS5o9+7dePz48euBkhnFCgK0LnRHnEYz/7JWCbUsbIhTLc6CHk0+igzzgrsfFecgvNQAquiT1VbTsKsPkXb/hQ5nNHJ75oT6I8BLA9TzusnC+ITmieYKEVfrzle/Ajf9PqzqDOziH2BXHgDpnfDTe1FKfx2e24NNqb/Uf/SmRW0EqNuK/Olcmgm1LDRTLIygo5QFb/8SUdxx2IWrYlEWYQnb/PIDVMs34LV9E67zPhYqs7CdLDL+uNTJR+nC1G0yAlpk4fUExi581y2uuB5aFKcwJCRYWDmNhLHlsyUEcjt+KIQ5CNt6gLnUj9Bb/aUQqqLbhalXBwRoUeiGAqOwVpMNW8/CGMWqjH2GKLWCKEsjx1mP/1ewHXPWD6RKw0SqA7RvdhOhmlGM0zcoK2h6Esxa7kP5/KpAx5fjD8B6Kb+gzitZ+1GwDr3ZGtmI0Yt+N9Sy2DLr8Z2da1gKcUhyXNWzMgqirD+KnD+8EXCZPjUQCLUsGm2sWoXTYz+9R6bLHaser6JTjr+rptGsQ6J0+78WI2YWTMXFPM55OhYlaDeULGzMiuGHHPcOfLtXZj3fEDJ01ViYlPrM73mc9Rz/iSFKHE3X6RzqV4c0obOhuPJ0SsKt6vaikh6En/q+BLPjKobxnQFlcUiUtDsM1jMlGQg0jCwc/qbUn5GvzMC1D8DLHRYH820Vo9D1OOXfv7FEeS9j413HRrdtoSdlCSZAReYBvDxblQkBHXFVPvPdU98vfcf/1TH1v7/0vlIHcJe/4/cFqTvrVfFUTlpczpW9ipK6KZGGkoXCddq0HPJ6+UJ1w3tOxq81SVJqxSwckI5PS9LAjayfRUBHv6FkUU3GyLMYZSQIAU39GmfQ4jrt9T0MtmXwTsZBr8Q30xKDjFVc3Fgs4VGTs91aZFEBUMQrzi2ug0SI947l46OuNjx1PfxmOo+RQgkH27L4sCOH72xqwx8XSvjHOtNSUTL0WmRJBLKvmZCbqh6+LET5p1iQX03Nr8xoxsouhuYX8JO3u/HVjiyezxfQl83gbsXDDKdLDSx6MUsDBTBNr47AF8T1PBOLckGIUlKJ0aVCI1+U94+fz+FppYoPpB6n3j/tyiKtGXvExdxYlmXkBgYGcOLEiVVxvHbtGm7evBkX41jnMUa5NJOXfMn/iFLbEHMnf18s4Hs9nbi7WMFOJ4XTXTn8fL74f1mKMAF08yxalkW3sTChzHF9BLolmP1UYpTUK6ai/H5EXNRbtizwYAZPyucl2fdRLt7vv35TZ/0xmpp1QmBOCPCeBLPM3q5WZM0hPteexZRkaTPLi9Julz38rah/qxMdgtT2HY+GdQKklZp5+PAhzp8/3zIi3ZdA9gOZ9VybX1SuqLYwNOkQgnypvQ33pF6nWKERIcovxAXFmRzpXijWckMBA6MysWWQT6Agtwpl9Mv1ox+/vQm52uWswps2+Xyqvxub0ynckHqTbhUfvyjFIkoUaIxliYJWE+vOp2z8VWKSD8XV/GxrH24sFFUMwzzLF9tz6Bei/GmhjP9IVOOJK2rGHlFDliYSIGpXE75kbF8UwGn0d3s7cfqtrpUM7m8lv1KvDC7jH51iyKKD0gbWmbZsXJeg1eOrdolCHVL9amHbsovTmfFqxSyaxNtASE3XzUBA27KQeXEC3LxsX3UdWfwkWz64kn9l8ZMspzSr5JqhYo0+9LwQQsmiY55eJQ63r1Yyh2B5M0ip7atcxC17nrl9NfM1WXZptq9qqLIhVeL88EPJEkgaWJZaP7fWKGhRSJRUZUK2r15RG8nUpevyv5e3r35L1uceQr48Cyf9Zm1f/VRyIny1Qgn0qmMU9GKWGKOi66FFWdrnzO2rga3z1WcSiMdZjxtaZ1Mn5T0doydzSrMQaBhZzPbVZqmwef1okyWqjzPbV5unxGb1FEqWuLMgs321WSqM109t7Kkbh4aSJZ4oUHuDzPbVuOg19ryoXiKQJpQsq0XJOp2Z7auNVXi9W9eZDWlPnSlcFJdktq/WW531b0+HILW9hpKFNx/kfeV4d6CoxWxfjYrYxtSnfnWeRxRKFt6ym/dJDbtH6quGabavbgwB1ur15TCC98ClnsNKqLngzZL5zJqXi07cEta5Od58BAK91bog6lfnduyhZCHj6IJ0bn3Z/KGbHteLQHADwrpYFgrDBxnxsSNRg9z1DsSc33gEqFfqV6eEWpaALHwujblvvw6krV2n1g1Rn9RrXckSEIaPGnE9d2V1lYlbWpsYa8WZ1CP1qUsUtqVlWViRDwLgQ4wW8guKMKYkFwFP9lFTj9RnlOckhk6dayEJWDg9Pa2eapZOLy0piJrcSS7MyZWcXoAvuh4+1IFEiWJVOPJIZAncEUnC5yXSjGVkB79jO5EW/iYX8mRJHhCE77Qm5dJSjMLHKkexKMGoI5MlcEnsjE/AImlKxZJK2jELSCsTJ9ubLDW0vrTMyiqSyL35mXSjbviIGD6wPW6JRZagM3bMF00brQzNG4VcLYkXV0BzXjwEaP35o+WPmgk3WpT1lnWRJeicgtRDmPUOxpzfWAS0Z0ONFcO0ngQEDFmSoKUWkdGQpUUUkQQxDFmSoKUWkdGQpUUUkQQxDFmSoKUWkdGQpUUUkQQx/gsDJj36A8FvSQAAAABJRU5ErkJggg=="},28453:(e,d,s)=>{s.d(d,{R:()=>t,x:()=>l});var i=s(96540);const r={},n=i.createContext(r);function t(e){const d=i.useContext(n);return i.useMemo((function(){return"function"==typeof e?e(d):{...d,...e}}),[d,e])}function l(e){let d;return d=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),i.createElement(n.Provider,{value:d},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/2969dc70.6db03ace.js b/Doc/assets/js/2969dc70.6db03ace.js new file mode 100644 index 00000000..b874ead0 --- /dev/null +++ b/Doc/assets/js/2969dc70.6db03ace.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[5237],{34348:(e,d,i)=>{i.r(d),i.d(d,{assets:()=>o,contentTitle:()=>t,default:()=>a,frontMatter:()=>n,metadata:()=>l,toc:()=>c});var s=i(74848),r=i(28453);const n={id:"ue-refdocs",title:"Unreal Plugin API Reference",slug:"/unreal/refdocs/"},t=void 0,l={id:"ue-refdocs",title:"Unreal Plugin API Reference",description:"Classes",source:"@site/public/en-us/generated-refdocs.mdx",sourceDirName:".",slug:"/unreal/refdocs/",permalink:"/unreal/refdocs/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-docs/tree/main/public/en-us/generated-refdocs.mdx",tags:[],version:"current",frontMatter:{id:"ue-refdocs",title:"Unreal Plugin API Reference",slug:"/unreal/refdocs/"},sidebar:"sidebar",previous:{title:"Android Configuration",permalink:"/unreal/android-configuration/"}},o={},c=[{value:"Classes",id:"classes",level:2},{value:"ModioCommonTypesLibrary",id:"modiocommontypeslibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy",level:5},{value:"ModioCreateModLibrary",id:"modiocreatemodlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-1",level:5},{value:"ModioErrorCodeLibrary",id:"modioerrorcodelibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-2",level:5},{value:"ModioErrorConditionLibrary",id:"modioerrorconditionlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-3",level:5},{value:"ModioExampleLibrary",id:"modioexamplelibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-4",level:5},{value:"ModioImageLibrary",id:"modioimagelibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-5",level:5},{value:"ModioModCollectionLibrary",id:"modiomodcollectionlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-6",level:5},{value:"ModioModProgressInfoLibrary",id:"modiomodprogressinfolibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-7",level:5},{value:"ModioModTagOptionsLibrary",id:"modiomodtagoptionslibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-8",level:5},{value:"ModioPlatformHelpersLibrary",id:"modioplatformhelperslibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-9",level:5},{value:"ModioPresetFilterParamsLibrary",id:"modiopresetfilterparamslibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-10",level:5},{value:"ModioSDKLibrary",id:"modiosdklibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-11",level:5},{value:"ModioSubmissionExtensionLibrary",id:"modiosubmissionextensionlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-12",level:5},{value:"SubmitModChangesAsync",id:"submitmodchangesasync",level:4},{value:"Requirements",id:"requirements",level:5},{value:"Parameters",id:"parameters",level:5},{value:"Error Values",id:"error-values",level:5},{value:"ModioSubsystem",id:"modiosubsystem",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-13",level:5},{value:"Set Log Level",id:"set-log-level",level:4},{value:"Parameters",id:"parameters-1",level:5},{value:"Run Pending Handlers",id:"run-pending-handlers",level:4},{value:"Parameters",id:"parameters-2",level:5},{value:"Query User Subscriptions",id:"query-user-subscriptions",level:4},{value:"Parameters",id:"parameters-3",level:5},{value:"Returns",id:"returns",level:5},{value:"Query User Purchased Mods",id:"query-user-purchased-mods",level:4},{value:"Requirements",id:"requirements-1",level:5},{value:"Parameters",id:"parameters-4",level:5},{value:"Returns",id:"returns-1",level:5},{value:"Query User Installations",id:"query-user-installations",level:4},{value:"Parameters",id:"parameters-5",level:5},{value:"Returns",id:"returns-2",level:5},{value:"Query System Installations",id:"query-system-installations",level:4},{value:"Parameters",id:"parameters-6",level:5},{value:"Returns",id:"returns-3",level:5},{value:"Prioritize Transfer for Mod",id:"prioritize-transfer-for-mod",level:4},{value:"Requirements",id:"requirements-2",level:5},{value:"Parameters",id:"parameters-7",level:5},{value:"Returns",id:"returns-4",level:5},{value:"Error Values",id:"error-values-1",level:5},{value:"Kill Background Thread",id:"kill-background-thread",level:4},{value:"VerifyUserAuthenticationAsync",id:"verifyuserauthenticationasync",level:4},{value:"Requirements",id:"requirements-3",level:5},{value:"Parameters",id:"parameters-8",level:5},{value:"Error Values",id:"error-values-2",level:5},{value:"UnsubscribeFromModAsync",id:"unsubscribefrommodasync",level:4},{value:"Requirements",id:"requirements-4",level:5},{value:"Parameters",id:"parameters-9",level:5},{value:"Error Values",id:"error-values-3",level:5},{value:"UnmuteUserAsync",id:"unmuteuserasync",level:4},{value:"Requirements",id:"requirements-5",level:5},{value:"Parameters",id:"parameters-10",level:5},{value:"Error Values",id:"error-values-4",level:5},{value:"SubscribeToModAsync",id:"subscribetomodasync",level:4},{value:"Requirements",id:"requirements-6",level:5},{value:"Parameters",id:"parameters-11",level:5},{value:"Error Values",id:"error-values-5",level:5},{value:"SubmitNewModFileForMod",id:"submitnewmodfileformod",level:4},{value:"Requirements",id:"requirements-7",level:5},{value:"Parameters",id:"parameters-12",level:5},{value:"Error Values",id:"error-values-6",level:5},{value:"SubmitNewModAsync",id:"submitnewmodasync",level:4},{value:"Requirements",id:"requirements-8",level:5},{value:"Parameters",id:"parameters-13",level:5},{value:"Error Values",id:"error-values-7",level:5},{value:"SubmitModRatingAsync",id:"submitmodratingasync",level:4},{value:"Requirements",id:"requirements-9",level:5},{value:"Parameters",id:"parameters-14",level:5},{value:"Error Values",id:"error-values-8",level:5},{value:"SubmitModChangesAsync",id:"submitmodchangesasync-1",level:4},{value:"Requirements",id:"requirements-10",level:5},{value:"Parameters",id:"parameters-15",level:5},{value:"Error Values",id:"error-values-9",level:5},{value:"ShutdownAsync",id:"shutdownasync",level:4},{value:"Parameters",id:"parameters-16",level:5},{value:"SetLanguage",id:"setlanguage",level:4},{value:"Parameters",id:"parameters-17",level:5},{value:"RequestEmailAuthCodeAsync",id:"requestemailauthcodeasync",level:4},{value:"Requirements",id:"requirements-11",level:5},{value:"Parameters",id:"parameters-18",level:5},{value:"Error Values",id:"error-values-10",level:5},{value:"ReportContentAsync",id:"reportcontentasync",level:4},{value:"Requirements",id:"requirements-12",level:5},{value:"Parameters",id:"parameters-19",level:5},{value:"Error Values",id:"error-values-11",level:5},{value:"RemoveFromTempModSet",id:"removefromtempmodset",level:4},{value:"Requirements",id:"requirements-13",level:5},{value:"Parameters",id:"parameters-20",level:5},{value:"Returns",id:"returns-5",level:5},{value:"Error Values",id:"error-values-12",level:5},{value:"RefreshUserEntitlementsAsync",id:"refreshuserentitlementsasync",level:4},{value:"Requirements",id:"requirements-14",level:5},{value:"Parameters",id:"parameters-21",level:5},{value:"QueryUserProfile",id:"queryuserprofile",level:4},{value:"Parameters",id:"parameters-22",level:5},{value:"Returns",id:"returns-6",level:5},{value:"QueryTempModSet",id:"querytempmodset",level:4},{value:"Parameters",id:"parameters-23",level:5},{value:"Returns",id:"returns-7",level:5},{value:"QueryCurrentModUpdate",id:"querycurrentmodupdate",level:4},{value:"Parameters",id:"parameters-24",level:5},{value:"Returns",id:"returns-8",level:5},{value:"PurchaseModAsync",id:"purchasemodasync",level:4},{value:"Requirements",id:"requirements-15",level:5},{value:"Parameters",id:"parameters-25",level:5},{value:"PreviewExternalUpdatesAsync",id:"previewexternalupdatesasync",level:4},{value:"Parameters",id:"parameters-26",level:5},{value:"MuteUserAsync",id:"muteuserasync",level:4},{value:"Requirements",id:"requirements-16",level:5},{value:"Parameters",id:"parameters-27",level:5},{value:"Error Values",id:"error-values-13",level:5},{value:"MetricsSessionStartAsync",id:"metricssessionstartasync",level:4},{value:"Parameters",id:"parameters-28",level:5},{value:"Error Values",id:"error-values-14",level:5},{value:"MetricsSessionSendHeartbeatOnceAsync",id:"metricssessionsendheartbeatonceasync",level:4},{value:"Parameters",id:"parameters-29",level:5},{value:"Error Values",id:"error-values-15",level:5},{value:"MetricsSessionSendHeartbeatAtIntervalAsync",id:"metricssessionsendheartbeatatintervalasync",level:4},{value:"Parameters",id:"parameters-30",level:5},{value:"Error Values",id:"error-values-16",level:5},{value:"MetricsSessionEndAsync",id:"metricssessionendasync",level:4},{value:"Parameters",id:"parameters-31",level:5},{value:"Error Values",id:"error-values-17",level:5},{value:"ListUserGamesAsync",id:"listusergamesasync",level:4},{value:"Requirements",id:"requirements-17",level:5},{value:"Parameters",id:"parameters-32",level:5},{value:"Error Values",id:"error-values-18",level:5},{value:"ListUserCreatedModsAsync",id:"listusercreatedmodsasync",level:4},{value:"Requirements",id:"requirements-18",level:5},{value:"Parameters",id:"parameters-33",level:5},{value:"Error Values",id:"error-values-19",level:5},{value:"ListAllModsAsync",id:"listallmodsasync",level:4},{value:"Requirements",id:"requirements-19",level:5},{value:"Parameters",id:"parameters-34",level:5},{value:"Error Values",id:"error-values-20",level:5},{value:"InitTempModSet",id:"inittempmodset",level:4},{value:"Requirements",id:"requirements-20",level:5},{value:"Parameters",id:"parameters-35",level:5},{value:"Returns",id:"returns-9",level:5},{value:"Error Values",id:"error-values-21",level:5},{value:"InitializeAsync",id:"initializeasync",level:4},{value:"Parameters",id:"parameters-36",level:5},{value:"Error Values",id:"error-values-22",level:5},{value:"GetUserWalletBalanceAsync",id:"getuserwalletbalanceasync",level:4},{value:"Requirements",id:"requirements-21",level:5},{value:"Parameters",id:"parameters-37",level:5},{value:"GetUserMediaAsync (Avatar)",id:"getusermediaasync-avatar",level:4},{value:"Requirements",id:"requirements-22",level:5},{value:"Parameters",id:"parameters-38",level:5},{value:"Error Values",id:"error-values-23",level:5},{value:"GetUserDelegationTokenAsync",id:"getuserdelegationtokenasync",level:4},{value:"Requirements",id:"requirements-23",level:5},{value:"Parameters",id:"parameters-39",level:5},{value:"GetTermsOfUseAsync",id:"gettermsofuseasync",level:4},{value:"Requirements",id:"requirements-24",level:5},{value:"Parameters",id:"parameters-40",level:5},{value:"Error Values",id:"error-values-24",level:5},{value:"GetMutedUsersAsync",id:"getmutedusersasync",level:4},{value:"Requirements",id:"requirements-25",level:5},{value:"Parameters",id:"parameters-41",level:5},{value:"Error Values",id:"error-values-25",level:5},{value:"GetModTagOptionsAsync",id:"getmodtagoptionsasync",level:4},{value:"Requirements",id:"requirements-26",level:5},{value:"Parameters",id:"parameters-42",level:5},{value:"Error Values",id:"error-values-26",level:5},{value:"GetModMediaAsync (Logo)",id:"getmodmediaasync-logo",level:4},{value:"Requirements",id:"requirements-27",level:5},{value:"Parameters",id:"parameters-43",level:5},{value:"Error Values",id:"error-values-27",level:5},{value:"GetModMediaAsync (Gallery Image)",id:"getmodmediaasync-gallery-image",level:4},{value:"Requirements",id:"requirements-28",level:5},{value:"Parameters",id:"parameters-44",level:5},{value:"Error Values",id:"error-values-28",level:5},{value:"GetModMediaAsync (Avatar)",id:"getmodmediaasync-avatar",level:4},{value:"Requirements",id:"requirements-29",level:5},{value:"Parameters",id:"parameters-45",level:5},{value:"Error Values",id:"error-values-29",level:5},{value:"GetModInfoAsync",id:"getmodinfoasync",level:4},{value:"Requirements",id:"requirements-30",level:5},{value:"Parameters",id:"parameters-46",level:5},{value:"Error Values",id:"error-values-30",level:5},{value:"GetModDependenciesAsync",id:"getmoddependenciesasync",level:4},{value:"Requirements",id:"requirements-31",level:5},{value:"Parameters",id:"parameters-47",level:5},{value:"Error Values",id:"error-values-31",level:5},{value:"GetModCreationHandle",id:"getmodcreationhandle",level:4},{value:"Parameters",id:"parameters-48",level:5},{value:"GetLanguage",id:"getlanguage",level:4},{value:"Parameters",id:"parameters-49",level:5},{value:"Returns",id:"returns-10",level:5},{value:"GetGameInfoAsync",id:"getgameinfoasync",level:4},{value:"Requirements",id:"requirements-32",level:5},{value:"Parameters",id:"parameters-50",level:5},{value:"Error Values",id:"error-values-32",level:5},{value:"ForceUninstallModAsync",id:"forceuninstallmodasync",level:4},{value:"Parameters",id:"parameters-51",level:5},{value:"Error Values",id:"error-values-33",level:5},{value:"FetchUserPurchasesAsync",id:"fetchuserpurchasesasync",level:4},{value:"Requirements",id:"requirements-33",level:5},{value:"Parameters",id:"parameters-52",level:5},{value:"FetchExternalUpdatesAsync",id:"fetchexternalupdatesasync",level:4},{value:"Parameters",id:"parameters-53",level:5},{value:"EnableModManagement",id:"enablemodmanagement",level:4},{value:"Parameters",id:"parameters-54",level:5},{value:"Returns",id:"returns-11",level:5},{value:"Error Values",id:"error-values-34",level:5},{value:"CloseTempModSet",id:"closetempmodset",level:4},{value:"Requirements",id:"requirements-34",level:5},{value:"Parameters",id:"parameters-55",level:5},{value:"Returns",id:"returns-12",level:5},{value:"Error Values",id:"error-values-35",level:5},{value:"ClearUserDataAsync",id:"clearuserdataasync",level:4},{value:"Requirements",id:"requirements-35",level:5},{value:"Parameters",id:"parameters-56",level:5},{value:"Error Values",id:"error-values-36",level:5},{value:"AuthenticateUserExternalAsync",id:"authenticateuserexternalasync",level:4},{value:"Requirements",id:"requirements-36",level:5},{value:"Parameters",id:"parameters-57",level:5},{value:"Error Values",id:"error-values-37",level:5},{value:"AuthenticateUserEmailAsync",id:"authenticateuseremailasync",level:4},{value:"Requirements",id:"requirements-37",level:5},{value:"Parameters",id:"parameters-58",level:5},{value:"Error Values",id:"error-values-38",level:5},{value:"ArchiveModAsync",id:"archivemodasync",level:4},{value:"Requirements",id:"requirements-38",level:5},{value:"Parameters",id:"parameters-59",level:5},{value:"Error Values",id:"error-values-39",level:5},{value:"AddToTempModSet",id:"addtotempmodset",level:4},{value:"Requirements",id:"requirements-39",level:5},{value:"Parameters",id:"parameters-60",level:5},{value:"Returns",id:"returns-13",level:5},{value:"Error Values",id:"error-values-40",level:5},{value:"Is Using Background Thread",id:"is-using-background-thread",level:4},{value:"Is Mod Management Busy",id:"is-mod-management-busy",level:4},{value:"Parameters",id:"parameters-61",level:5},{value:"Returns",id:"returns-14",level:5},{value:"Get Last Validation Error",id:"get-last-validation-error",level:4},{value:"Requirements",id:"requirements-40",level:5},{value:"Parameters",id:"parameters-62",level:5},{value:"Returns",id:"returns-15",level:5},{value:"Disable Mod Management",id:"disable-mod-management",level:4},{value:"Parameters",id:"parameters-63",level:5},{value:"ModioTokenPackLibrary",id:"modiotokenpacklibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-14",level:5},{value:"ModioUIEnumLocalizationLibrary",id:"modiouienumlocalizationlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-15",level:5},{value:"ModioUILocalizationLibrary",id:"modiouilocalizationlibrary",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-16",level:5},{value:"ModioUnsigned64Library",id:"modiounsigned64library",level:3},{value:"Inheritance Hierarchy",id:"inheritance-hierarchy-17",level:5},{value:"Structs",id:"structs",level:2},{value:"ModioGameInfoList",id:"modiogameinfolist",level:3},{value:"ModioGameInfo",id:"modiogameinfo",level:3},{value:"Variables",id:"variables",level:5},{value:"ModioModTagInfo",id:"modiomodtaginfo",level:3},{value:"Variables",id:"variables-1",level:5},{value:"ModioLocalizedTagCategory",id:"modiolocalizedtagcategory",level:3},{value:"Variables",id:"variables-2",level:5},{value:"ModioModTagLocalizationData",id:"modiomodtaglocalizationdata",level:3},{value:"Variables",id:"variables-3",level:5},{value:"ModioGamePlatform",id:"modiogameplatform",level:3},{value:"Variables",id:"variables-4",level:5},{value:"ModioOtherUrl",id:"modiootherurl",level:3},{value:"Variables",id:"variables-5",level:5},{value:"ModioGameStats",id:"modiogamestats",level:3},{value:"Variables",id:"variables-6",level:5},{value:"ModioGameID",id:"modiogameid",level:3},{value:"ModioTheme",id:"modiotheme",level:3},{value:"Variables",id:"variables-7",level:5},{value:"ModioHeaderImage",id:"modioheaderimage",level:3},{value:"Variables",id:"variables-8",level:5},{value:"ModioLogo",id:"modiologo",level:3},{value:"Variables",id:"variables-9",level:5},{value:"ModioIcon",id:"modioicon",level:3},{value:"Variables",id:"variables-10",level:5},{value:"ModioPagedResult",id:"modiopagedresult",level:3},{value:"Variables",id:"variables-11",level:5},{value:"ModioModInfoList",id:"modiomodinfolist",level:3},{value:"ModioModInfo",id:"modiomodinfo",level:3},{value:"Variables",id:"variables-12",level:5},{value:"ModioUnsigned64",id:"modiounsigned64",level:3},{value:"ModioModStats",id:"modiomodstats",level:3},{value:"Variables",id:"variables-13",level:5},{value:"ModioSketchfabURLList",id:"modiosketchfaburllist",level:3},{value:"ModioYoutubeURLList",id:"modioyoutubeurllist",level:3},{value:"ModioModTag",id:"modiomodtag",level:3},{value:"Variables",id:"variables-14",level:5},{value:"ModioMetadata",id:"modiometadata",level:3},{value:"Variables",id:"variables-15",level:5},{value:"ModioFileMetadata",id:"modiofilemetadata",level:3},{value:"Variables",id:"variables-16",level:5},{value:"ModioModID",id:"modiomodid",level:3},{value:"ModioFileMetadataID",id:"modiofilemetadataid",level:3},{value:"ModioUser",id:"modiouser",level:3},{value:"Variables",id:"variables-17",level:5},{value:"ModioUserID",id:"modiouserid",level:3},{value:"ModioModTagOptions",id:"modiomodtagoptions",level:3},{value:"ModioTokenPackList",id:"modiotokenpacklist",level:3},{value:"ModioTokenPack",id:"modiotokenpack",level:3},{value:"ModioErrorCode",id:"modioerrorcode",level:3},{value:"ModioOptionalGameInfo",id:"modiooptionalgameinfo",level:3},{value:"ModioOptionalImage",id:"modiooptionalimage",level:3},{value:"ModioOptionalModDependencyList",id:"modiooptionalmoddependencylist",level:3},{value:"ModioOptionalModInfo",id:"modiooptionalmodinfo",level:3},{value:"ModioOptionalModTagOptions",id:"modiooptionalmodtagoptions",level:3},{value:"ModioOptionalTerms",id:"modiooptionalterms",level:3},{value:"ModioOptionalUInt64",id:"modiooptionaluint64",level:3},{value:"ModioOptionalModInfoList",id:"modiooptionalmodinfolist",level:3},{value:"ModioOptionalGameInfoList",id:"modiooptionalgameinfolist",level:3},{value:"ModioModManagementEvent",id:"modiomodmanagementevent",level:3},{value:"Variables",id:"variables-18",level:5},{value:"ModioOptionalUserList",id:"modiooptionaluserlist",level:3},{value:"ModioOptionalModChangeMap",id:"modiooptionalmodchangemap",level:3},{value:"ModioOptionalTransactionRecord",id:"modiooptionaltransactionrecord",level:3},{value:"ModioOptionalEntitlementConsumptionStatusList",id:"modiooptionalentitlementconsumptionstatuslist",level:3},{value:"ModioOptionalModID",id:"modiooptionalmodid",level:3},{value:"ModioAuthenticationParams",id:"modioauthenticationparams",level:3},{value:"Variables",id:"variables-19",level:5},{value:"ModioApiKey",id:"modioapikey",level:3},{value:"ModioGuid",id:"modioguid",level:3},{value:"ModioOptionalGuid",id:"modiooptionalguid",level:3},{value:"ModioEmailAddress",id:"modioemailaddress",level:3},{value:"ModioEmailAuthCode",id:"modioemailauthcode",level:3},{value:"ModioEntitlementParams",id:"modioentitlementparams",level:3},{value:"ModioMetricsSessionParams",id:"modiometricssessionparams",level:3},{value:"ModioTokenPackID",id:"modiotokenpackid",level:3},{value:"ModioCreateModFileParams",id:"modiocreatemodfileparams",level:3},{value:"Variables",id:"variables-20",level:5},{value:"ModioCreateModParams",id:"modiocreatemodparams",level:3},{value:"Variables",id:"variables-21",level:5},{value:"ModioEditModParams",id:"modioeditmodparams",level:3},{value:"ModioEntitlementWalletBalance",id:"modioentitlementwalletbalance",level:3},{value:"Variables",id:"variables-22",level:5},{value:"ModioOptionalEntitlementWalletBalance",id:"modiooptionalentitlementwalletbalance",level:3},{value:"ModioEntitlementConsumptionVirtualCurrencyDetails",id:"modioentitlementconsumptionvirtualcurrencydetails",level:3},{value:"Variables",id:"variables-23",level:5},{value:"EntitlementConsumptionStatus",id:"entitlementconsumptionstatus",level:3},{value:"Variables",id:"variables-24",level:5},{value:"ModioEntitlementConsumptionStatusList",id:"modioentitlementconsumptionstatuslist",level:3},{value:"Variables",id:"variables-25",level:5},{value:"ModioFilterParams",id:"modiofilterparams",level:3},{value:"ModioPresetFilterParams",id:"modiopresetfilterparams",level:3},{value:"Variables",id:"variables-26",level:5},{value:"ModioImageWrapper",id:"modioimagewrapper",level:3},{value:"Variables",id:"variables-27",level:5},{value:"ModioInitializeOptions",id:"modioinitializeoptions",level:3},{value:"Variables",id:"variables-28",level:5},{value:"ModioModChangeMap",id:"modiomodchangemap",level:3},{value:"Variables",id:"variables-29",level:5},{value:"ModioModCollectionEntry",id:"modiomodcollectionentry",level:3},{value:"ModioModCreationHandle",id:"modiomodcreationhandle",level:3},{value:"ModioModDependency",id:"modiomoddependency",level:3},{value:"Variables",id:"variables-30",level:5},{value:"ModioModDependencyList",id:"modiomoddependencylist",level:3},{value:"Variables",id:"variables-31",level:5},{value:"ModioModProgressInfo",id:"modiomodprogressinfo",level:3},{value:"Variables",id:"variables-32",level:5},{value:"ModioOptionalModProgressInfo",id:"modiooptionalmodprogressinfo",level:3},{value:"ModioReportParams",id:"modioreportparams",level:3},{value:"ModioLink",id:"modiolink",level:3},{value:"Variables",id:"variables-33",level:5},{value:"ModioTerms",id:"modioterms",level:3},{value:"Variables",id:"variables-34",level:5},{value:"ModioOptionalTokenPack",id:"modiooptionaltokenpack",level:3},{value:"ModioOptionalTokenPackList",id:"modiooptionaltokenpacklist",level:3},{value:"ModioTransactionRecord",id:"modiotransactionrecord",level:3},{value:"Variables",id:"variables-35",level:5},{value:"ModioOptionalUser",id:"modiooptionaluser",level:3},{value:"ModioUserList",id:"modiouserlist",level:3},{value:"Variables",id:"variables-36",level:5},{value:"ModioValidationError",id:"modiovalidationerror",level:3},{value:"Variables",id:"variables-37",level:5},{value:"ModioCreateModFileMemoryParams",id:"modiocreatemodfilememoryparams",level:3},{value:"Variables",id:"variables-38",level:5},{value:"Functions",id:"functions",level:2},{value:"Set Session Identifier",id:"set-session-identifier",level:3},{value:"Parameters",id:"parameters-64",level:4},{value:"Returns",id:"returns-16",level:4},{value:"Set Session Id",id:"set-session-id",level:3},{value:"Parameters",id:"parameters-65",level:4},{value:"Set Portal",id:"set-portal",level:3},{value:"Parameters",id:"parameters-66",level:4},{value:"Returns",id:"returns-17",level:4},{value:"Set Game Id",id:"set-game-id",level:3},{value:"Parameters",id:"parameters-67",level:4},{value:"Returns",id:"returns-18",level:4},{value:"Set Game Environment",id:"set-game-environment",level:3},{value:"Parameters",id:"parameters-68",level:4},{value:"Returns",id:"returns-19",level:4},{value:"Set Extended Initialization Parameters",id:"set-extended-initialization-parameters",level:3},{value:"Parameters",id:"parameters-69",level:4},{value:"Returns",id:"returns-20",level:4},{value:"Set Background Thread",id:"set-background-thread",level:3},{value:"Parameters",id:"parameters-70",level:4},{value:"Returns",id:"returns-21",level:4},{value:"Set API Key",id:"set-api-key",level:3},{value:"Parameters",id:"parameters-71",level:4},{value:"Returns",id:"returns-22",level:4},{value:"ModioModID != ModioModID",id:"modiomodid--modiomodid",level:3},{value:"Parameters",id:"parameters-72",level:4},{value:"Make Metrics Session Params",id:"make-metrics-session-params",level:3},{value:"Parameters",id:"parameters-73",level:4},{value:"Make Initialize Options",id:"make-initialize-options",level:3},{value:"Parameters",id:"parameters-74",level:4},{value:"Make Guid",id:"make-guid",level:3},{value:"Parameters",id:"parameters-75",level:4},{value:"Make Game Id",id:"make-game-id",level:3},{value:"Parameters",id:"parameters-76",level:4},{value:"Make Entitlement Params",id:"make-entitlement-params",level:3},{value:"Parameters",id:"parameters-77",level:4},{value:"Make Auth Params",id:"make-auth-params",level:3},{value:"Parameters",id:"parameters-78",level:4},{value:"Returns",id:"returns-23",level:4},{value:"Make Api Key",id:"make-api-key",level:3},{value:"Parameters",id:"parameters-79",level:4},{value:"Get Raw Value from Mod ID",id:"get-raw-value-from-mod-id",level:3},{value:"Parameters",id:"parameters-80",level:4},{value:"Returns",id:"returns-24",level:4},{value:"ModioModID == ModioModID",id:"modiomodid--modiomodid-1",level:3},{value:"Parameters",id:"parameters-81",level:4},{value:"Set Version String",id:"set-version-string",level:3},{value:"Set Tags",id:"set-tags",level:3},{value:"Set Modfile Platforms",id:"set-modfile-platforms",level:3},{value:"Set Mod File Metadata Blob",id:"set-mod-file-metadata-blob",level:3},{value:"Set Metadata Blob",id:"set-metadata-blob",level:3},{value:"Set Mark as Active Release",id:"set-mark-as-active-release",level:3},{value:"Set Initial Visibility DEPRECATED",id:"set-initial-visibility-deprecated",level:3},{value:"Set Initial Visibility",id:"set-initial-visibility",level:3},{value:"Set Homepage URL",id:"set-homepage-url",level:3},{value:"Set Description",id:"set-description",level:3},{value:"Set Changelog String",id:"set-changelog-string",level:3},{value:"Get Localized Text for Enum by Name",id:"get-localized-text-for-enum-by-name",level:3},{value:"Parameters",id:"parameters-82",level:4},{value:"Returns",id:"returns-25",level:4},{value:"FileSizeToText (Unsigned64)",id:"filesizetotext-unsigned64",level:3},{value:"Parameters",id:"parameters-83",level:4},{value:"Returns",id:"returns-26",level:4},{value:"Get Localized Text from Default Table by Key",id:"get-localized-text-from-default-table-by-key",level:3},{value:"Parameters",id:"parameters-84",level:4},{value:"Returns",id:"returns-27",level:4},{value:"Reconstruct Error",id:"reconstruct-error",level:3},{value:"Parameters",id:"parameters-85",level:4},{value:"IsError",id:"iserror",level:3},{value:"Parameters",id:"parameters-86",level:4},{value:"Returns",id:"returns-28",level:4},{value:"Get Value",id:"get-value",level:3},{value:"Parameters",id:"parameters-87",level:4},{value:"Returns",id:"returns-29",level:4},{value:"Get Message",id:"get-message",level:3},{value:"Parameters",id:"parameters-88",level:4},{value:"Returns",id:"returns-30",level:4},{value:"Error Code Matches",id:"error-code-matches",level:3},{value:"Parameters",id:"parameters-89",level:4},{value:"Returns",id:"returns-31",level:4},{value:"List User Subscription Async",id:"list-user-subscription-async",level:3},{value:"Parameters",id:"parameters-90",level:4},{value:"Get Logo Thumbnail Size",id:"get-logo-thumbnail-size",level:3},{value:"Get Logo Full Size",id:"get-logo-full-size",level:3},{value:"Get Avatar Thumbnail Size",id:"get-avatar-thumbnail-size",level:3},{value:"To Filter Params",id:"to-filter-params",level:3},{value:"Parameters",id:"parameters-91",level:4},{value:"Returns",id:"returns-32",level:4},{value:"Load Async",id:"load-async",level:3},{value:"Get Texture",id:"get-texture",level:3},{value:"Get State",id:"get-state",level:3},{value:"Get Logo Size",id:"get-logo-size",level:3},{value:"Parameters",id:"parameters-92",level:4},{value:"Returns",id:"returns-33",level:4},{value:"Get Gallery Size",id:"get-gallery-size",level:3},{value:"Parameters",id:"parameters-93",level:4},{value:"Returns",id:"returns-34",level:4},{value:"Get Avatar Size",id:"get-avatar-size",level:3},{value:"Parameters",id:"parameters-94",level:4},{value:"Returns",id:"returns-35",level:4},{value:"Get Path",id:"get-path",level:3},{value:"Parameters",id:"parameters-95",level:4},{value:"Returns",id:"returns-36",level:4},{value:"Get Mod State",id:"get-mod-state",level:3},{value:"Parameters",id:"parameters-96",level:4},{value:"Returns",id:"returns-37",level:4},{value:"Get Mod Profile",id:"get-mod-profile",level:3},{value:"Parameters",id:"parameters-97",level:4},{value:"Returns",id:"returns-38",level:4},{value:"Get ID",id:"get-id",level:3},{value:"Parameters",id:"parameters-98",level:4},{value:"Returns",id:"returns-39",level:4},{value:"Get Total Progress",id:"get-total-progress",level:3},{value:"Parameters",id:"parameters-99",level:4},{value:"Returns",id:"returns-40",level:4},{value:"Get Current State",id:"get-current-state",level:3},{value:"Parameters",id:"parameters-100",level:4},{value:"Get Current Progress",id:"get-current-progress",level:3},{value:"Parameters",id:"parameters-101",level:4},{value:"Returns",id:"returns-41",level:4},{value:"Get Tags",id:"get-tags",level:3},{value:"Parameters",id:"parameters-102",level:4},{value:"Returns",id:"returns-42",level:4},{value:"Get Paged Result",id:"get-paged-result",level:3},{value:"Parameters",id:"parameters-103",level:4},{value:"Returns",id:"returns-43",level:4},{value:"Get Default Portal for Current Platform",id:"get-default-portal-for-current-platform",level:3},{value:"Parameters",id:"parameters-104",level:4},{value:"Returns",id:"returns-44",level:4},{value:"Get Default Auth Provider for Current Platform",id:"get-default-auth-provider-for-current-platform",level:3},{value:"Parameters",id:"parameters-105",level:4},{value:"Returns",id:"returns-45",level:4},{value:"Get Current Platform",id:"get-current-platform",level:3},{value:"Parameters",id:"parameters-106",level:4},{value:"Returns",id:"returns-46",level:4},{value:"Round Number String",id:"round-number-string",level:3},{value:"Parameters",id:"parameters-107",level:4},{value:"Get Percent (integer64/integer64)",id:"get-percent-integer64integer64",level:3},{value:"Parameters",id:"parameters-108",level:4},{value:"Returns",id:"returns-47",level:4},{value:"Is Valid Security Code Format",id:"is-valid-security-code-format",level:3},{value:"Parameters",id:"parameters-109",level:4},{value:"Returns",id:"returns-48",level:4},{value:"Is Valid Email Address Format",id:"is-valid-email-address-format",level:3},{value:"Parameters",id:"parameters-110",level:4},{value:"Returns",id:"returns-49",level:4},{value:"Get Time Span as String",id:"get-time-span-as-string",level:3},{value:"Parameters",id:"parameters-111",level:4},{value:"Get Shortened Number as String",id:"get-shortened-number-as-string",level:3},{value:"Parameters",id:"parameters-112",level:4},{value:"Get Project Initialize Options for Session Id",id:"get-project-initialize-options-for-session-id",level:3},{value:"Parameters",id:"parameters-113",level:4},{value:"Get Project Game Id",id:"get-project-game-id",level:3},{value:"Parameters",id:"parameters-114",level:4},{value:"Get Project Environment",id:"get-project-environment",level:3},{value:"Parameters",id:"parameters-115",level:4},{value:"Get Project Api Key",id:"get-project-api-key",level:3},{value:"Parameters",id:"parameters-116",level:4},{value:"Get Monetization Purchase Category",id:"get-monetization-purchase-category",level:3},{value:"Parameters",id:"parameters-117",level:4},{value:"Returns",id:"returns-50",level:4},{value:"Get Language Code String",id:"get-language-code-string",level:3},{value:"Parameters",id:"parameters-118",level:4},{value:"Returns",id:"returns-51",level:4},{value:"Get Language Code from String",id:"get-language-code-from-string",level:3},{value:"Parameters",id:"parameters-119",level:4},{value:"Returns",id:"returns-52",level:4},{value:"Get Desired File Size Unit",id:"get-desired-file-size-unit",level:3},{value:"Parameters",id:"parameters-120",level:4},{value:"Returns",id:"returns-53",level:4},{value:"Get Default Session Id Windows",id:"get-default-session-id-windows",level:3},{value:"Parameters",id:"parameters-121",level:4},{value:"Returns",id:"returns-54",level:4},{value:"ToString (Filesize)",id:"tostring-filesize",level:3},{value:"Parameters",id:"parameters-122",level:4},{value:"Returns",id:"returns-55",level:4},{value:"GetDefaultModInstallationDirectory",id:"getdefaultmodinstallationdirectory",level:3},{value:"Parameters",id:"parameters-123",level:4},{value:"Returns",id:"returns-56",level:4},{value:"Is Purchasable",id:"is-purchasable",level:3},{value:"Get Title",id:"get-title",level:3},{value:"Get Regular Price",id:"get-regular-price",level:3},{value:"Get Numeric Price",id:"get-numeric-price",level:3},{value:"Get Modio Id",id:"get-modio-id",level:3},{value:"Get Long Description",id:"get-long-description",level:3},{value:"Get Id",id:"get-id-1",level:3},{value:"Get Fields",id:"get-fields",level:3},{value:"Get Display Price",id:"get-display-price",level:3},{value:"Get Description",id:"get-description",level:3},{value:"ModioUnsigned64 - ModioUnsigned64",id:"modiounsigned64---modiounsigned64",level:3},{value:"Percentage Unsigned 64",id:"percentage-unsigned-64",level:3},{value:"ModioUnsigned64 != ModioUnsigned64",id:"modiounsigned64--modiounsigned64",level:3},{value:"Make from Components",id:"make-from-components",level:3},{value:"ModioUnsigned64 < ModioUnsigned64",id:"modiounsigned64--modiounsigned64-1",level:3},{value:"ModioUnsigned64 > 0",id:"modiounsigned64--0",level:3},{value:"ModioUnsigned64 > ModioUnsigned64",id:"modiounsigned64--modiounsigned64-2",level:3},{value:"ModioUnsigned64 == ModioUnsigned64",id:"modiounsigned64--modiounsigned64-3",level:3},{value:"ModioUnsigned64 / ModioUnsigned64",id:"modiounsigned64--modiounsigned64-4",level:3},{value:"ModioUnsigned64 / float",id:"modiounsigned64--float",level:3},{value:"ModioUnsigned64 / ModioUnsigned64 (truncate)",id:"modiounsigned64--modiounsigned64-truncate",level:3},{value:"Break to Components",id:"break-to-components",level:3},{value:"ModioUnsigned64 + ModioUnsigned64",id:"modiounsigned64--modiounsigned64-5",level:3},{value:"SubmitNewModFromMemoryAsync",id:"submitnewmodfrommemoryasync",level:3},{value:"Parameters",id:"parameters-124",level:4},{value:"SubmitNewModFileForModFromMemory",id:"submitnewmodfileformodfrommemory",level:3},{value:"Requirements",id:"requirements-41",level:4},{value:"Parameters",id:"parameters-125",level:4},{value:"LoadModFileToMemory",id:"loadmodfiletomemory",level:3},{value:"Requirements",id:"requirements-42",level:4},{value:"Parameters",id:"parameters-126",level:4},{value:"Enums",id:"enums",level:2},{value:"EModioModfilePlatform",id:"EModioModfilePlatform",level:3},{value:"EGameMaturityFlags",id:"EGameMaturityFlags",level:3},{value:"EGameMonetizationFlags",id:"EGameMonetizationFlags",level:3},{value:"EModioModServerSideStatus",id:"EModioModServerSideStatus",level:3},{value:"EModioVirusStatus",id:"EModioVirusStatus",level:3},{value:"EModioVirusScanStatus",id:"EModioVirusScanStatus",level:3},{value:"EModioObjectVisibilityFlags",id:"EModioObjectVisibilityFlags",level:3},{value:"EModioMaturityFlags",id:"EModioMaturityFlags",level:3},{value:"EModioModManagementEventType",id:"EModioModManagementEventType",level:3},{value:"EModioAuthenticationProvider",id:"EModioAuthenticationProvider",level:3},{value:"EModioEnvironment",id:"EModioEnvironment",level:3},{value:"EModioPortal",id:"EModioPortal",level:3},{value:"EModioPlatformName",id:"EModioPlatformName",level:3},{value:"EModioLogoSize",id:"EModioLogoSize",level:3},{value:"EModioAvatarSize",id:"EModioAvatarSize",level:3},{value:"EModioGallerySize",id:"EModioGallerySize",level:3},{value:"EModioLogLevel",id:"EModioLogLevel",level:3},{value:"EModioLanguage",id:"EModioLanguage",level:3},{value:"EModioModChangeType",id:"EModioModChangeType",level:3},{value:"EFileSizeUnit",id:"EFileSizeUnit",level:3},{value:"EModioEntitlementConsumptionState",id:"EModioEntitlementConsumptionState",level:3},{value:"EModioEntitlementType",id:"EModioEntitlementType",level:3},{value:"EModioErrorCondition",id:"EModioErrorCondition",level:3},{value:"EModioSortFieldType",id:"EModioSortFieldType",level:3},{value:"EModioSortDirection",id:"EModioSortDirection",level:3},{value:"EModioRevenueFilterType",id:"EModioRevenueFilterType",level:3},{value:"EModioImageState",id:"EModioImageState",level:3},{value:"EModioModState",id:"EModioModState",level:3},{value:"EModioModProgressState",id:"EModioModProgressState",level:3},{value:"EModioOpenStoreResult",id:"EModioOpenStoreResult",level:3},{value:"EModioRating",id:"EModioRating",level:3},{value:"EModioReportType",id:"EModioReportType",level:3}];function h(e){const d={a:"a",admonition:"admonition",code:"code",del:"del",em:"em",h2:"h2",h3:"h3",h4:"h4",h5:"h5",hr:"hr",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components},{RefTable:n}=d;return n||function(e,d){throw new Error("Expected "+(d?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("RefTable",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.h2,{id:"classes",children:"Classes"}),"\n",(0,s.jsx)(d.h3,{id:"modiocommontypeslibrary",children:"ModioCommonTypesLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiocreatemodlibrary",children:"ModioCreateModLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-1",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioerrorcodelibrary",children:"ModioErrorCodeLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-2",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioerrorconditionlibrary",children:"ModioErrorConditionLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-3",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioexamplelibrary",children:"ModioExampleLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-4",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioimagelibrary",children:"ModioImageLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-5",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodcollectionlibrary",children:"ModioModCollectionLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-6",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodprogressinfolibrary",children:"ModioModProgressInfoLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-7",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodtagoptionslibrary",children:"ModioModTagOptionsLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-8",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioplatformhelperslibrary",children:"ModioPlatformHelpersLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-9",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiopresetfilterparamslibrary",children:"ModioPresetFilterParamsLibrary"}),"\n",(0,s.jsx)(d.p,{children:"Blueprint library for working with preset filter parameters"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-10",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiosdklibrary",children:"ModioSDKLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-11",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiosubmissionextensionlibrary",children:"ModioSubmissionExtensionLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-12",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.h4,{id:"submitmodchangesasync",children:"SubmitModChangesAsync"}),"\n",(0,s.jsx)(d.p,{children:"Edits the parameters of a mod, by updating any fields set in the Params object to match the passed-in values. Fields left empty on the Params object will not be updated. This method also accepts a Png binary file for uploading a new logo."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubmissionExtensionLibrary_K2_SubmitModChangesFromMemoryAsync.png",src:i(79873).A+"",width:"328",height:"244"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitModChangesFromMemoryAsync(FModioModID Mod, FModioEditModParams Params, TArray PngData, FOnGetModInfoDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubmissionExtensionLibrary"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Mod"})}),(0,s.jsx)(d.td,{children:"The ID of the mod you wish to edit"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Params"})}),(0,s.jsx)(d.td,{children:"Descriptor containing the fields that should be altered."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PngData"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"The callback invoked when the changes have been submitted, containing an optional updated ModInfo object if the edits were performed successfully"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"GenericError::SDKNotInitialized"}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"UserDataError::InvalidUser"}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"NetworkError"}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"InvalidArgsError"}),(0,s.jsx)(d.td,{children:"Some fields in Params did not pass validation"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiosubsystem",children:"ModioSubsystem"}),"\n",(0,s.jsxs)(d.p,{children:[(0,s.jsx)(d.code,{children:"ModioSubsystem"})," is a thin wrapper around the mod.io SDK, wrapping all the functions available in the SDK's public header ",(0,s.jsx)(d.code,{children:"modio/ModioSDK.h"}),". This subsystem also converts mod.io SDK types to unreal-friendly types and caches some expensive operations."]}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-13",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> EngineSubsystem-> DynamicSubsystem-> Subsystem-> Object"}),"\n",(0,s.jsx)(d.h4,{id:"set-log-level",children:"Set Log Level"}),"\n",(0,s.jsx)(d.p,{children:"Sets the global logging level."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_SetLogLevel.png",src:i(28862).A+"",width:"306",height:"182"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetLogLevel(EModioLogLevel UnrealLogLevel)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-1",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UnrealLogLevel"})}),(0,s.jsx)(d.td,{children:"Determines which messages to include in the log output. Messages with a log level below the specified value will not be displayed."})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"run-pending-handlers",children:"Run Pending Handlers"}),"\n",(0,s.jsx)(d.p,{children:"Runs any pending mod.io work on the calling thread and invokes any callbacks passed to asynchronous operations."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_RunPendingHandlers.png",src:i(63183).A+"",width:"227",height:"124"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void RunPendingHandlers()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-2",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"query-user-subscriptions",children:"Query User Subscriptions"}),"\n",(0,s.jsx)(d.p,{children:"Fetches the local view of the user's subscribed mods, including mods that are subscribed but not yet installed"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_QueryUserSubscriptions.png",src:i(26349).A+"",width:"230",height:"94"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"TMap QueryUserSubscriptions()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-3",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:[(0,s.jsx)(d.code,{children:"TMap"})," providing information about the subscribed mods"]}),"\n",(0,s.jsx)(d.h4,{id:"query-user-purchased-mods",children:"Query User Purchased Mods"}),"\n",(0,s.jsxs)(d.p,{children:["Returns the user's purchased mods. ",(0,s.jsx)(d.a,{href:"#fetchuserpurchasesasync",children:(0,s.jsx)(d.code,{children:"FetchUserPurchasesAsync"})})," must be called first to populate the cache."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_QueryUserPurchasedMods.png",src:i(703).A+"",width:"247",height:"94"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"TMap QueryUserPurchasedMods()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-1",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-4",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-1",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["A ",(0,s.jsx)(d.code,{children:"TMap"})," of all purchases a user has made."]}),"\n",(0,s.jsx)(d.h4,{id:"query-user-installations",children:"Query User Installations"}),"\n",(0,s.jsx)(d.p,{children:"Fetches the subset of the user's subscribed mods that are installed and ready for loading"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_QueryUserInstallations.png",src:i(94564).A+"",width:"333",height:"126"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"TMap QueryUserInstallations(bool bIncludeOutdatedMods)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-5",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bIncludeOutdatedMods"})}),(0,s.jsx)(d.td,{children:"Include subscribed mods that are installed but have an updated version on the server that has not yet been installed"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-2",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:[(0,s.jsx)(d.code,{children:"TMap"})," providing information about the subscribed mods"]}),"\n",(0,s.jsx)(d.h4,{id:"query-system-installations",children:"Query System Installations"}),"\n",(0,s.jsx)(d.p,{children:"Fetches all mods installed on the system, including those installed by other users."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_QuerySystemInstallations.png",src:i(31214).A+"",width:"239",height:"94"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"TMap QuerySystemInstallations()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-6",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-3",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["A ",(0,s.jsx)(d.code,{children:"TMap"})," of all mods installed on the system, including those installed by other users."]}),"\n",(0,s.jsx)(d.h4,{id:"prioritize-transfer-for-mod",children:"Prioritize Transfer for Mod"}),"\n",(0,s.jsx)(d.p,{children:"Cancels or suspends the current mod update, installation, or upload, and begins processing a pending operation for the specified mod ID"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_PrioritizeTransferForMod.png",src:i(16501).A+"",width:"271",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode PrioritizeTransferForMod(FModioModID ModToPrioritize)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-2",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-7",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModToPrioritize"})}),(0,s.jsx)(d.td,{children:"The ID for the mod to prioritize"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-4",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"Error code indicating the status of the prioritization request. Will be empty if the prioritization was successful or if the mod was already being processed"}),"\n",(0,s.jsx)(d.h5,{id:"error-values-1",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid or not present in the list of pending operations"})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"kill-background-thread",children:"Kill Background Thread"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_KillBackgroundThread.png",src:i(71552).A+"",width:"227",height:"124"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void KillBackgroundThread()\n"})}),"\n",(0,s.jsx)(d.h4,{id:"verifyuserauthenticationasync",children:"VerifyUserAuthenticationAsync"}),"\n",(0,s.jsx)(d.p,{children:"Queries the server to verify the state of the currently authenticated user if there is one present"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_VerifyUserAuthenticationAsync.png",src:i(93680).A+"",width:"265",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_VerifyUserAuthenticationAsync(FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-3",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-8",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsxs)(d.td,{children:["Callback invoked with the results of the verification process. An empty ",(0,s.jsx)(d.code,{children:"ModioErrorCode"})," indicates successful verification i.e. the mod.io server was contactable and the user's authentication remains valid."]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-2",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"unsubscribefrommodasync",children:"UnsubscribeFromModAsync"}),"\n",(0,s.jsx)(d.p,{children:"Sends a request to the mod.io server to remove the specified mod from the user's list of subscriptions. If no other local users are subscribed to the specified mod this function will also mark the mod for uninstallation by the SDK."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync.png",src:i(28297).A+"",width:"248",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_UnsubscribeFromModAsync(FModioModID ModToUnsubscribeFrom, FOnErrorOnlyDelegate OnUnsubscribeComplete)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-4",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-9",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModToUnsubscribeFrom"})}),(0,s.jsx)(d.td,{children:"Mod ID of the mod requiring unsubscription."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"On Unsubscribe Complete"})}),(0,s.jsx)(d.td,{children:"Callback invoked when the unsubscription request is completed."})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-3",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,s.jsx)(d.td,{children:"Specified mod does not exist or was deleted"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"unmuteuserasync",children:"UnmuteUserAsync"}),"\n",(0,s.jsx)(d.p,{children:"Unmute a user. This allows mod.io to display mods authored by the now unmuted user when performing searches."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_UnmuteUserAsync.png",src:i(60291).A+"",width:"227",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_UnmuteUserAsync(FModioUserID UserID, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-5",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-10",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserID"})}),(0,s.jsx)(d.td,{children:"ID of the user to unmute"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code indicating success or failure of unmuting the user."})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-4",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied user ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"subscribetomodasync",children:"SubscribeToModAsync"}),"\n",(0,s.jsx)(d.p,{children:"Sends a request to the mod.io server to add the specified mod to the user's list of subscriptions, and marks the mod for local installation by the SDK"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SubscribeToModAsync.png",src:i(72021).A+"",width:"251",height:"218"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_SubscribeToModAsync(FModioModID ModToSubscribeTo, bool IncludeDependencies, FOnErrorOnlyDelegate OnSubscribeComplete)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-6",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-11",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModToSubscribeTo"})}),(0,s.jsx)(d.td,{children:"Mod ID of the mod requiring a subscription."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"IncludeDependencies"})}),(0,s.jsx)(d.td,{children:"Subscribe to all dependencies as well."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"On Subscribe Complete"})}),(0,s.jsx)(d.td,{children:"Callback invoked when the subscription request is completed."})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-5",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,s.jsx)(d.td,{children:"Specified mod does not exist or was deleted"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"submitnewmodfileformod",children:"SubmitNewModFileForMod"}),"\n",(0,s.jsxs)(d.p,{children:["Queues the upload of a new modfile release for the specified mod using the submitted parameters. This function takes an ",(0,s.jsx)(d.code,{children:"ModioCreateModFileParams"})," object to specify the path to the root folder of the new modfile. The plugin will compress the folder's contents into a .zip archive and queue the result for upload. When the upload completes, a mod management event will be triggered. Note the plugin is also responsible for decompressing the archive upon its installation at a later point in time."]}),"\n",(0,s.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,s.jsx)(d.p,{children:"This function is part of an experimental feature and is subject to change."})}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SubmitNewModFileForMod.png",src:i(64303).A+"",width:"237",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitNewModFileForMod(FModioModID Mod, FModioCreateModFileParams Params)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-7",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-12",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Mod"})}),(0,s.jsx)(d.td,{children:"The ID of the mod you are submitting a file for"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Params"})}),(0,s.jsx)(d.td,{children:"Information about the mod file being created, including the root path of the directory that will be archived"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-6",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"submitnewmodasync",children:"SubmitNewModAsync"}),"\n",(0,s.jsx)(d.p,{children:"Requests the creation of a new mod on the server with the specified parameters"}),"\n",(0,s.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,s.jsx)(d.p,{children:"This function is part of an experimental feature and is subject to change."})}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SubmitNewModAsync.png",src:i(93124).A+"",width:"227",height:"214"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitNewModAsync(FModioModCreationHandle Handle, FModioCreateModParams Params, FOnSubmitNewModDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-8",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-13",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Handle"})}),(0,s.jsxs)(d.td,{children:["The ",(0,s.jsx)(d.code,{children:"ModioModCreationHandle"})," for this submission. Once this method invokes your callback indicating success, the ",(0,s.jsx)(d.code,{children:"ModioModCreationHandle"})," is invalid for the rest of the session. You should request a new one for the next submission attempt."]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Params"})}),(0,s.jsx)(d.td,{children:"Information about the new mod to create"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsxs)(d.td,{children:["Callback providing a status code and an optional ",(0,s.jsx)(d.code,{children:"ModioModID"})," for the newly created mod"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-7",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsxs)(d.td,{children:["Some fields in ",(0,s.jsx)(d.code,{children:"Params"})," did not pass validation"]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"submitmodratingasync",children:"SubmitModRatingAsync"}),"\n",(0,s.jsx)(d.p,{children:"Submits a rating for a mod on behalf of the current user. Submit a neutral rating to effectively clear a rating already submitted by a user. Submitting other values will overwrite any existing rating submitted by this user."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SubmitModRatingAsync.png",src:i(87149).A+"",width:"306",height:"242"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitModRatingAsync(FModioModID Mod, EModioRating Rating, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-9",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-14",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Mod"})}),(0,s.jsx)(d.td,{children:"The mod the user is rating"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Rating"})}),(0,s.jsx)(d.td,{children:"The rating the user wishes to submit"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code indicating success or failure of the rating submission"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-8",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,s.jsx)(d.td,{children:"Specified mod does not exist or was deleted"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"submitmodchangesasync-1",children:"SubmitModChangesAsync"}),"\n",(0,s.jsxs)(d.p,{children:["Edits the parameters of a mod by updating any fields set in the ",(0,s.jsx)(d.code,{children:"Params"})," object to match the passed-in values. Fields left empty on the ",(0,s.jsx)(d.code,{children:"Params"})," object will not be updated."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SubmitModChangesAsync.png",src:i(83175).A+"",width:"233",height:"214"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitModChangesAsync(FModioModID Mod, FModioEditModParams Params, FOnGetModInfoDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-10",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-15",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Mod"})}),(0,s.jsx)(d.td,{children:"The ID of the mod you wish to edit"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Params"})}),(0,s.jsx)(d.td,{children:"Descriptor containing the fields that should be altered."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsxs)(d.td,{children:["The callback invoked when the changes have been submitted containing an optional updated ",(0,s.jsx)(d.code,{children:"ModioModInfo"})," object if the edits were performed successfully"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-9",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsxs)(d.td,{children:["Some fields in ",(0,s.jsx)(d.code,{children:"Params"})," did not pass validation"]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"shutdownasync",children:"ShutdownAsync"}),"\n",(0,s.jsxs)(d.p,{children:["Cancels any running internal operations, frees SDK resources, and invokes any pending callbacks with an ",(0,s.jsx)(d.code,{children:"OperationCanceled"})," error category. This function will NOT block while the deinitialization occurs."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ShutdownAsync.png",src:i(68768).A+"",width:"232",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_ShutdownAsync(FOnErrorOnlyDelegate OnShutdownComplete)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-16",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"On Shutdown Complete"})}),(0,s.jsxs)(d.td,{children:["Callback invoked when the plugin is shut down and calling ",(0,s.jsx)(d.a,{href:"#run-pending-handlers",children:(0,s.jsx)(d.code,{children:"RunPendingHandlers"})})," is no longer required"]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"setlanguage",children:"SetLanguage"}),"\n",(0,s.jsx)(d.p,{children:"Set language to get corresponding data from the server"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_SetLanguage.png",src:i(53784).A+"",width:"306",height:"182"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_SetLanguage(EModioLanguage Locale)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-17",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Locale"})}),(0,s.jsx)(d.td,{children:"Language to set"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"requestemailauthcodeasync",children:"RequestEmailAuthCodeAsync"}),"\n",(0,s.jsx)(d.p,{children:"Begins email authentication for the current session by requesting a one-time code be sent to the specified email address."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_RequestEmailAuthCodeAsync.png",src:i(67942).A+"",width:"252",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_RequestEmailAuthCodeAsync(FModioEmailAddress EmailAddress, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-11",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-authenticated-user"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-18",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EmailAddress"})}),(0,s.jsx)(d.td,{children:"The email address to send the code to"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code indicating the outcome of the request"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-10",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserAlreadyAuthenticatedError"})}),(0,s.jsxs)(d.td,{children:["Current user is already authenticated. De-authenticate the current user with ",(0,s.jsx)(d.a,{href:"#clearuserdataasync",children:(0,s.jsx)(d.code,{children:"ClearUserDataAsync"})}),", and re-initialize the SDK by calling ",(0,s.jsx)(d.a,{href:"#shutdownasync",children:(0,s.jsx)(d.code,{children:"ShutdownAsync"})})," then ",(0,s.jsx)(d.a,{href:"#initializeasync",children:(0,s.jsx)(d.code,{children:"InitializeAsync"})}),"."]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"reportcontentasync",children:"ReportContentAsync"}),"\n",(0,s.jsxs)(d.p,{children:["Sends a content report to mod.io. When using this function, please inform your users that if they provide their contact name or details in the ",(0,s.jsx)(d.code,{children:"Report"})," parameter, this data may be shared with the person responsible for the content being reported. For more information on what data in a report will be shared with whom, please see ",(0,s.jsx)(d.a,{href:"https://mod.io/report",children:"our website's report form"}),"."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ReportContentAsync.png",src:i(57479).A+"",width:"227",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_ReportContentAsync(FModioReportParams Report, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-12",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-19",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Report"})}),(0,s.jsx)(d.td,{children:"Information about the content being reported and a description of the report."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code to indicate successful submission of the report."})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-11",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"Required information in the report did not pass validation"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsxs)(d.td,{children:["The mod ID, game ID, or user ID supplied to ",(0,s.jsx)(d.code,{children:"Report"})," is invalid"]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"removefromtempmodset",children:"RemoveFromTempModSet"}),"\n",(0,s.jsxs)(d.p,{children:["Remove mods from a temp mod set. Every temp mod specified by ",(0,s.jsx)(d.code,{children:"ModIds"})," will be uninstalled unless the user is already subscribed."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_RemoveFromTempModSet.png",src:i(89494).A+"",width:"235",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode K2_RemoveFromTempModSet(TArray ModIds)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-13",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"mod-management-enabled"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"temp-mod-set-initialized"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-20",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModIds"})}),(0,s.jsxs)(d.td,{children:["TArray of ",(0,s.jsx)(d.code,{children:"ModioModID"}),"s to remove as temp mods"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-5",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["Error code indicating the status of the ",(0,s.jsx)(d.code,{children:"TempModSet"}),". Will be empty if it was successful"]}),"\n",(0,s.jsx)(d.h5,{id:"error-values-12",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModManagementDisabled"})}),(0,s.jsx)(d.td,{children:"Mod management not enabled"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TempModSetNotInitialized"})}),(0,s.jsxs)(d.td,{children:[(0,s.jsx)(d.code,{children:"TempModSet"})," not initialized"]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"refreshuserentitlementsasync",children:"RefreshUserEntitlementsAsync"}),"\n",(0,s.jsx)(d.p,{children:"Requests mod.io refresh the available entitlements for the current user purchased through the portal and currently authenticated."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_RefreshUserEntitlementsAsync.png",src:i(83788).A+"",width:"265",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_RefreshUserEntitlementsAsync(FModioEntitlementParams Params, FOnRefreshUserEntitlementsDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-14",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-21",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Params"})}),(0,s.jsx)(d.td,{children:"Additional parameters."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing an error code indicating success or failure of the refresh operation."})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"queryuserprofile",children:"QueryUserProfile"}),"\n",(0,s.jsx)(d.p,{children:"Fetches the currently authenticated mod.io user profile if there is one"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_QueryUserProfile.png",src:i(56696).A+"",width:"227",height:"92"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioOptionalUser K2_QueryUserProfile()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-22",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-6",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:[(0,s.jsx)(d.code,{children:"ModioOptionalUser"})," object containing profile information"]}),"\n",(0,s.jsx)(d.h4,{id:"querytempmodset",children:"QueryTempModSet"}),"\n",(0,s.jsxs)(d.p,{children:["Query every system and temp mod in ",(0,s.jsx)(d.code,{children:"TempModSet"})]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_QueryTempModSet.png",src:i(55060).A+"",width:"227",height:"126"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"TMap K2_QueryTempModSet()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-23",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-7",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["TMap using ",(0,s.jsx)(d.code,{children:"ModioModID"})," as keys and ",(0,s.jsx)(d.code,{children:"ModioModCollectionEntry"})," objects providing information about mods in ",(0,s.jsx)(d.code,{children:"TempModSet"})]}),"\n",(0,s.jsx)(d.h4,{id:"querycurrentmodupdate",children:"QueryCurrentModUpdate"}),"\n",(0,s.jsx)(d.p,{children:"Provides progress information for a mod installation or update operation if one is currently in progress."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_QueryCurrentModUpdate.png",src:i(72340).A+"",width:"227",height:"92"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioOptionalModProgressInfo K2_QueryCurrentModUpdate()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-24",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-8",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:[(0,s.jsx)(d.code,{children:"ModioOptionalModProgressInfo"})," object containing information regarding the progress of the installation operation."]}),"\n",(0,s.jsx)(d.h4,{id:"purchasemodasync",children:"PurchaseModAsync"}),"\n",(0,s.jsx)(d.p,{children:"Purchases a mod for the current player"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_PurchaseModAsync.png",src:i(68537).A+"",width:"227",height:"214"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_PurchaseModAsync(FModioModID ModID, FModioUnsigned64 ExpectedPrice, FOnPurchaseModDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-15",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-25",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModID"})}),(0,s.jsx)(d.td,{children:"ID of the mod to purchase"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ExpectedPrice"})}),(0,s.jsxs)(d.td,{children:["The price the user is expected to pay for the mod, generally ",(0,s.jsx)(d.a,{href:"#modiomodinfo",children:(0,s.jsx)(d.code,{children:"ModioModInfo.Price"})}),". This ensures that there is consistency between the displayed price and the price in the backend. If there is a mismatch, the purchase will fail."]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback invoked with purchase information once the purchase is completed."})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"previewexternalupdatesasync",children:"PreviewExternalUpdatesAsync"}),"\n",(0,s.jsxs)(d.p,{children:["Retrieve a list of updates between the users local mod state, and the server-side state. This allows you to identify which mods will be modified by the next call to ",(0,s.jsx)(d.a,{href:"#fetchexternalupdatesasync",children:(0,s.jsx)(d.code,{children:"FetchExternalUpdatesAsync"})})," in order to perform any content management (such as unloading files) that might be required."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_PreviewExternalUpdatesAsync.png",src:i(99101).A+"",width:"261",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_PreviewExternalUpdatesAsync(FOnPreviewExternalUpdatesDelegate OnPreviewDone)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-26",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"On Preview Done"})}),(0,s.jsx)(d.td,{children:"Callback invoked when the external state has been retrieved. It contains a dictionary with ModID as keys and change maps as values. Empty when there are no differences between local and the mod.io API service"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"muteuserasync",children:"MuteUserAsync"}),"\n",(0,s.jsx)(d.p,{children:"Mute a user. This will prevent mod.io from returning mods authored by the muted user. when performing searches."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_MuteUserAsync.png",src:i(96252).A+"",width:"227",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_MuteUserAsync(FModioUserID UserID, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-16",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-27",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserID"})}),(0,s.jsx)(d.td,{children:"ID of the User to mute"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code indicating success or failure of muting the user."})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-13",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied user ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"metricssessionstartasync",children:"MetricsSessionStartAsync"}),"\n",(0,s.jsx)(d.p,{children:"Start a metrics play session"}),"\n",(0,s.jsx)(d.admonition,{title:"Premium Feature",type:"info",children:(0,s.jsxs)(d.p,{children:["This function requires the ",(0,s.jsx)(d.strong,{children:"Metrics"})," premium feature. Please contact your mod.io representative for more details."]})}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_MetricsSessionStartAsync.png",src:i(10293).A+"",width:"238",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_MetricsSessionStartAsync(FModioMetricsSessionParams Params, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-28",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Params"})}),(0,s.jsxs)(d.td,{children:[(0,s.jsx)(d.code,{children:"ModioMetricsSessionParams"})," struct containing information of what and how to start a metrics session"]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing an error code indicating success or failure of the session start operation"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-14",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RateLimited"})}),(0,s.jsx)(d.td,{children:"Too many frequent calls to the API. Wait some time and try again."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidUser"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SessionNotInitialized"})}),(0,s.jsx)(d.td,{children:"Metrics session has not yet been initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SessionIsActive"})}),(0,s.jsx)(d.td,{children:"Metrics session is currently active and running"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"BadParameter"})}),(0,s.jsx)(d.td,{children:"One or more values in the Metric Session Parameters are invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"metricssessionsendheartbeatonceasync",children:"MetricsSessionSendHeartbeatOnceAsync"}),"\n",(0,s.jsx)(d.p,{children:"Sends a single heartbeat to the mod.io server to indicate a session is still active"}),"\n",(0,s.jsx)(d.admonition,{title:"Premium Feature",type:"info",children:(0,s.jsxs)(d.p,{children:["This function requires the ",(0,s.jsx)(d.strong,{children:"Metrics"})," premium feature. Please contact your mod.io representative for more details."]})}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatOnceAsync.png",src:i(44014).A+"",width:"326",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_MetricsSessionSendHeartbeatOnceAsync(FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-29",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing an error code indicating success or failure of the session heartbeat operation"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-15",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidUser"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SessionNotInitialized"})}),(0,s.jsx)(d.td,{children:"Metrics session has not yet been initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SessionIsNotActive"})}),(0,s.jsxs)(d.td,{children:["Metrics session is not currently running. Call ",(0,s.jsx)(d.a,{href:"#metricssessionstartasync",children:(0,s.jsx)(d.code,{children:"MetricsSessionStartAsync"})})," before attempting to sending a heartbeat."]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"metricssessionsendheartbeatatintervalasync",children:"MetricsSessionSendHeartbeatAtIntervalAsync"}),"\n",(0,s.jsx)(d.p,{children:"Sends a constant heartbeat at a given interval to the mod.io server to indicate a session is still active"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync.png",src:i(14811).A+"",width:"354",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_MetricsSessionSendHeartbeatAtIntervalAsync(FModioUnsigned64 IntervalSeconds, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-30",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"IntervalSeconds"})}),(0,s.jsx)(d.td,{children:"The frequency in seconds to send a heartbeat to the mod.io server"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing an error code indicating success or failure of the session heartbeat operation"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-16",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidUser"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SessionNotInitialized"})}),(0,s.jsx)(d.td,{children:"Metrics session has not yet been initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SessionIsNotActive"})}),(0,s.jsxs)(d.td,{children:["Metrics session is not currently running. Call ",(0,s.jsx)(d.a,{href:"#metricssessionstartasync",children:(0,s.jsx)(d.code,{children:"MetricsSessionStartAsync"})})," before attempting to sending a heartbeat."]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"metricssessionendasync",children:"MetricsSessionEndAsync"}),"\n",(0,s.jsx)(d.p,{children:"Ends a metrics play session"}),"\n",(0,s.jsx)(d.admonition,{title:"Premium Feature",type:"info",children:(0,s.jsxs)(d.p,{children:["This function requires the ",(0,s.jsx)(d.strong,{children:"Metrics"})," premium feature. Please contact your mod.io representative for more details."]})}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_MetricsSessionEndAsync.png",src:i(92124).A+"",width:"229",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_MetricsSessionEndAsync(FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-31",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing an error code indicating success or failure of the session end operation"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-17",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RateLimited"})}),(0,s.jsx)(d.td,{children:"Too many frequent calls to the API. Wait some time and try again."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidUser"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SessionNotInitialized"})}),(0,s.jsx)(d.td,{children:"Metrics session has not yet been initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SessionIsNotActive"})}),(0,s.jsxs)(d.td,{children:["Metrics session is not currently running. Call ",(0,s.jsx)(d.a,{href:"#metricssessionstartasync",children:(0,s.jsx)(d.code,{children:"MetricsSessionStartAsync"})})," before attempting to end a session."]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"listusergamesasync",children:"ListUserGamesAsync"}),"\n",(0,s.jsx)(d.p,{children:"Provides a list of games for the current user that match the parameters specified in the filter"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ListUserGamesAsync.png",src:i(6938).A+"",width:"227",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_ListUserGamesAsync(FModioFilterParams Filter, FOnListUserGamesDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-17",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-32",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Filter"})}),(0,s.jsxs)(d.td,{children:[(0,s.jsx)(d.a,{href:"#modiofilterparams",children:(0,s.jsx)(d.code,{children:"ModioFilterParams"})})," object containing any filters that should be applied to the query"]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsxs)(d.td,{children:["Callback invoked with a status code and an optional ",(0,s.jsx)(d.code,{children:"ModioGameInfoList"})," providing game profiles"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-18",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"listusercreatedmodsasync",children:"ListUserCreatedModsAsync"}),"\n",(0,s.jsx)(d.p,{children:"Provides a list of mods that the user has submitted or is a team member of for the current game, applying the parameters specified in the filter."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ListUserCreatedModsAsync.png",src:i(22028).A+"",width:"245",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_ListUserCreatedModsAsync(FModioFilterParams Filter, FOnListUserCreatedModsDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-18",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-33",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Filter"})}),(0,s.jsx)(d.td,{children:"Filter to apply when listing the user's created mods."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback invoked when the call succeeds, or when an error occurs."})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-19",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RateLimited"})}),(0,s.jsx)(d.td,{children:"Too many frequent calls to the API. Wait some time and try again."})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"listallmodsasync",children:"ListAllModsAsync"}),"\n",(0,s.jsx)(d.p,{children:"Provides a list of mods for the current game that match the parameters specified in the filter"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ListAllModsAsync.png",src:i(85890).A+"",width:"227",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_ListAllModsAsync(FModioFilterParams Filter, FOnListAllModsDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-19",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-34",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Filter"})}),(0,s.jsxs)(d.td,{children:[(0,s.jsx)(d.a,{href:"#modiofilterparams",children:(0,s.jsx)(d.code,{children:"ModioFilterParams"})})," object containing any filters that should be applied to the query"]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsxs)(d.td,{children:["Callback invoked with a status code and an optional ",(0,s.jsx)(d.code,{children:"ModioModInfoList"})," providing mod profiles"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-20",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"inittempmodset",children:"InitTempModSet"}),"\n",(0,s.jsxs)(d.p,{children:["Install every temp mod specified by ",(0,s.jsx)(d.code,{children:"ModIds"})," if not already installed."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_InitTempModSet.png",src:i(25684).A+"",width:"227",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode K2_InitTempModSet(TArray ModIds)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-20",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"mod-management-enabled"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-35",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModIds"})}),(0,s.jsxs)(d.td,{children:["TArray of ",(0,s.jsx)(d.code,{children:"ModioModID"}),"s to install as temp mods"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-9",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["Error code indicating the status of the ",(0,s.jsx)(d.code,{children:"TempModSet"}),". Will be empty if it was successful"]}),"\n",(0,s.jsx)(d.h5,{id:"error-values-21",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModManagementDisabled"})}),(0,s.jsx)(d.td,{children:"Mod management not enabled"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"initializeasync",children:"InitializeAsync"}),"\n",(0,s.jsx)(d.p,{children:"Initializes the SDK for the given user. Loads the state of mods installed on the system as well as the set of mods the specified user has installed on this device"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_InitializeAsync.png",src:i(49280).A+"",width:"227",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_InitializeAsync(FModioInitializeOptions InitializeOptions, FOnErrorOnlyDelegate OnInitComplete)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-36",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InitializeOptions"})}),(0,s.jsx)(d.td,{children:"Parameters to the function packed as a struct where all members needs to be initialized for the call to succeed"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"On Init Complete"})}),(0,s.jsx)(d.td,{children:"Callback which will be invoked with the result of initialization"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-22",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FilesystemError"})}),(0,s.jsx)(d.td,{children:"Couldn't create the user data or common data folders"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ConfigurationError"})}),(0,s.jsxs)(d.td,{children:["InitializeOptions contains an invalid value - inspect ",(0,s.jsx)(d.code,{children:"ec.value()"})," to determine what was incorrect"]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKAlreadyInitialized"})}),(0,s.jsx)(d.td,{children:"SDK already initialized"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getuserwalletbalanceasync",children:"GetUserWalletBalanceAsync"}),"\n",(0,s.jsxs)(d.p,{children:["Gets the users current wallet balance. This will also create a wallet for a user if one does not exist. You should ensure this is called prior to calling ",(0,s.jsx)(d.a,{href:"#purchasemodasync",children:(0,s.jsx)(d.code,{children:"PurchaseModAsync"})})," purchase will fail."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync.png",src:i(21964).A+"",width:"248",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetUserWalletBalanceAsync(FOnGetUserWalletBalanceDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-21",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-37",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback invoked with the users wallet balance"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getusermediaasync-avatar",children:"GetUserMediaAsync (Avatar)"}),"\n",(0,s.jsx)(d.p,{children:"Downloads the avatar of the currently authenticated user. Will only perform a download if there is no local cache of the avatar or if that cached copy is out-of-date."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetUserMediaAvatarAsync.png",src:i(96438).A+"",width:"306",height:"212"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetUserMediaAvatarAsync(EModioAvatarSize AvatarSize, FOnGetMediaDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-22",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-38",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"AvatarSize"})}),(0,s.jsx)(d.td,{children:"Parameter specifying the size of avatar image to download"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code for the download and an optional path to the downloaded image"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-23",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getuserdelegationtokenasync",children:"GetUserDelegationTokenAsync"}),"\n",(0,s.jsx)(d.p,{children:"Get a user delegation token that can be used for S2S service calls"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetUserDelegationTokenAsync.png",src:i(40348).A+"",width:"263",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetUserDelegationTokenAsync(FOnGetUserDelegationTokenDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-23",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-39",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback invoked with purchase information once the purchase is completed."})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"gettermsofuseasync",children:"GetTermsOfUseAsync"}),"\n",(0,s.jsx)(d.p,{children:"This function retrieves the information required for a game to display the mod.io terms of use to a player who wishes to create a mod.io account"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetTermsOfUseAsync.png",src:i(65789).A+"",width:"227",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetTermsOfUseAsync(FOnGetTermsOfUseDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-24",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-40",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback invoked with the terms of use data once retrieved from the server"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-24",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getmutedusersasync",children:"GetMutedUsersAsync"}),"\n",(0,s.jsx)(d.p,{children:"List all the users that have been muted by the current user."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetMutedUsersAsync.png",src:i(47193).A+"",width:"227",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetMutedUsersAsync(FOnMuteUsersDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-25",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-41",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code indicating success or failure of the operation, and an optional containing a list of muted users if successful."})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-25",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getmodtagoptionsasync",children:"GetModTagOptionsAsync"}),"\n",(0,s.jsxs)(d.p,{children:["Fetches the available tags used on mods for the current game. These tags can them be used in conjunction with the FilterParams passed to ",(0,s.jsx)(d.a,{href:"#listallmodsasync",children:(0,s.jsx)(d.code,{children:"ListAllModsAsync"})})," Will be cached when first received"]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModTagOptionsAsync.png",src:i(74220).A+"",width:"229",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModTagOptionsAsync(FOnGetModTagOptionsDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-26",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-42",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsxs)(d.td,{children:["Callback providing a status code and an optional ",(0,s.jsx)(d.code,{children:"ModioModTagOptions"})," object containing the available tags"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-26",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getmodmediaasync-logo",children:"GetModMediaAsync (Logo)"}),"\n",(0,s.jsx)(d.p,{children:"Downloads the logo for the specified mod. Will use existing file if it is already present on disk"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModMediaLogoAsync.png",src:i(90655).A+"",width:"306",height:"242"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModMediaLogoAsync(FModioModID ModId, EModioLogoSize LogoSize, FOnGetMediaDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-27",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-43",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModId"})}),(0,s.jsx)(d.td,{children:"Mod ID for use in logo retrieval"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"LogoSize"})}),(0,s.jsx)(d.td,{children:"Parameter indicating the size of logo that's required"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code and an optional path object pointing to the location of the downloaded image"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-27",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,s.jsx)(d.td,{children:"Specified mod media does not exist or was deleted"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InsufficientSpace"})}),(0,s.jsx)(d.td,{children:"Not enough space for the file"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getmodmediaasync-gallery-image",children:"GetModMediaAsync (Gallery Image)"}),"\n",(0,s.jsx)(d.p,{children:"Get a gallery image for the specified mod ID. If it already exists on disk the file will be reused unless it is outdated"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync.png",src:i(34351).A+"",width:"306",height:"277"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModMediaGalleryImageAsync(FModioModID ModId, EModioGallerySize GallerySize, int32 Index, FOnGetMediaDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-28",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-44",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModId"})}),(0,s.jsx)(d.td,{children:"The mod you want to retrieve an image for"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GallerySize"})}),(0,s.jsx)(d.td,{children:"Size of the image you want to retrieve"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Index"})}),(0,s.jsx)(d.td,{children:"The zero-based index of the image you want to retrieve"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback containing a status code and an Optional containing a path to the image file on disk"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-28",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,s.jsx)(d.td,{children:"Specified mod media does not exist or was deleted"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InsufficientSpace"})}),(0,s.jsx)(d.td,{children:"Not enough space for the file"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getmodmediaasync-avatar",children:"GetModMediaAsync (Avatar)"}),"\n",(0,s.jsx)(d.p,{children:"Downloads the creator avatar for a specified mod. Will use existing file if it is already present on disk and not outdated"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModMediaAvatarAsync.png",src:i(60973).A+"",width:"306",height:"242"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModMediaAvatarAsync(FModioModID ModId, EModioAvatarSize AvatarSize, FOnGetMediaDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-29",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-45",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModId"})}),(0,s.jsx)(d.td,{children:"ID of the mod the creator avatar will be retrieved for"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"AvatarSize"})}),(0,s.jsx)(d.td,{children:"Parameter indicating the size of avatar image that's required"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code and an optional path object pointing to the location of the downloaded image"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-29",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,s.jsx)(d.td,{children:"Specified mod media does not exist or was deleted"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InsufficientSpace"})}),(0,s.jsx)(d.td,{children:"Not enough space for the file"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getmodinfoasync",children:"GetModInfoAsync"}),"\n",(0,s.jsx)(d.p,{children:"Fetches detailed information about the specified mod, including description and file metadata for the most recent release"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModInfoAsync.png",src:i(7434).A+"",width:"227",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModInfoAsync(FModioModID ModId, FOnGetModInfoDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-30",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-46",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModId"})}),(0,s.jsx)(d.td,{children:"Mod ID of the mod to fetch data"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsxs)(d.td,{children:["Callback providing a status code and an optional ",(0,s.jsx)(d.code,{children:"ModioModInfo"})," object with the mod's extended information"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-30",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,s.jsx)(d.td,{children:"Specified mod does not exist or was deleted"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getmoddependenciesasync",children:"GetModDependenciesAsync"}),"\n",(0,s.jsx)(d.p,{children:"For a given Mod ID, fetches a list of any mods that the creator has marked as dependencies"}),"\n",(0,s.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,s.jsx)(d.p,{children:"This function is part of an experimental feature and is subject to change."})}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModDependenciesAsync.png",src:i(74955).A+"",width:"245",height:"218"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetModDependenciesAsync(FModioModID ModID, bool Recursive, FOnGetModDependenciesDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-31",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-47",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModID"})}),(0,s.jsx)(d.td,{children:"The mod to retrieve dependencies for"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Recursive"})}),(0,s.jsx)(d.td,{children:"Fetches dependencies recursively up to a depth of 5"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsxs)(d.td,{children:["Callback providing a status code and an optional ",(0,s.jsx)(d.code,{children:"ModioModTagOptions"})," object containing the available tags"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-31",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"getmodcreationhandle",children:"GetModCreationHandle"}),"\n",(0,s.jsxs)(d.p,{children:["Gets a new mod handle for use with ",(0,s.jsx)(d.a,{href:"#submitnewmodasync",children:(0,s.jsx)(d.code,{children:"SubmitNewModAsync"})}),"."]}),"\n",(0,s.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,s.jsx)(d.p,{children:"This function is part of an experimental feature and is subject to change."})}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetModCreationHandle.png",src:i(56025).A+"",width:"227",height:"124"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioModCreationHandle K2_GetModCreationHandle()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-48",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"getlanguage",children:"GetLanguage"}),"\n",(0,s.jsx)(d.p,{children:"Get the currently applied language"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetLanguage.png",src:i(82892).A+"",width:"227",height:"124"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioLanguage K2_GetLanguage()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-49",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-10",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"Current language"}),"\n",(0,s.jsx)(d.h4,{id:"getgameinfoasync",children:"GetGameInfoAsync"}),"\n",(0,s.jsx)(d.p,{children:"Fetches detailed information about the specified game"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetGameInfoAsync.png",src:i(85314).A+"",width:"227",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_GetGameInfoAsync(FModioGameID GameID, FOnGetGameInfoDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-32",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-50",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameID"})}),(0,s.jsx)(d.td,{children:"Game ID of the game data to fetch"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsxs)(d.td,{children:["Callback providing a status code and an optional ",(0,s.jsx)(d.code,{children:"ModioGameInfo"})," object with the game's extended information"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-32",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,s.jsx)(d.td,{children:"Specified game does not exist"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied game ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"forceuninstallmodasync",children:"ForceUninstallModAsync"}),"\n",(0,s.jsxs)(d.p,{children:["Forcibly uninstalls a mod from the system. This can be used when the host application requires additional space for other mods. The current user must not be subscribed to the mod to force uninstall. To remove a mod the current user is subscribed to, first use ",(0,s.jsx)(d.a,{href:"#unsubscribefrommodasync",children:(0,s.jsx)(d.code,{children:"UnsubscribeFromModAsync"})}),". If the mod does not uninstall (due to a different user on the same system remaining subscribed), ",(0,s.jsx)(d.code,{children:"ForceUninstallModAsync"})," can be called next."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ForceUninstallModAsync.png",src:i(2053).A+"",width:"227",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_ForceUninstallModAsync(FModioModID ModToRemove, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-51",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModToRemove"})}),(0,s.jsx)(d.td,{children:"The mod ID to force uninstall."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback invoked indicating success or failure of the uninstallation."})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-33",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"ApiErrorRefSuccess"}),(0,s.jsx)(d.td,{children:"User is still subscribed to the specified mod"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"fetchuserpurchasesasync",children:"FetchUserPurchasesAsync"}),"\n",(0,s.jsxs)(d.p,{children:["Fetches the user's purchases. This populates a runtime cache of purchase information that can be accessed using ",(0,s.jsx)(d.a,{href:"#query-user-purchased-mods",children:(0,s.jsx)(d.code,{children:"QueryUserPurchasedMods"})}),"."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync.png",src:i(5859).A+"",width:"240",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_FetchUserPurchasesAsync(FOnFetchUserPurchasesDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-33",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-52",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback invoked once the call has been completed."})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"fetchexternalupdatesasync",children:"FetchExternalUpdatesAsync"}),"\n",(0,s.jsx)(d.p,{children:"Synchronises the local list of the current user's subscribed mods with the server. Any mods that have been externally subscribed will be automatically marked for installation, and mods that have been externally removed from the user's subscriptions may be uninstalled if no other local users have a current subscription."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync.png",src:i(86649).A+"",width:"247",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_FetchExternalUpdatesAsync(FOnErrorOnlyDelegate OnFetchDone)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-53",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"On Fetch Done"})}),(0,s.jsx)(d.td,{children:"Callback invoked when the external state has been retrieved and merged with the local data"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"enablemodmanagement",children:"EnableModManagement"}),"\n",(0,s.jsx)(d.p,{children:"Enables the automatic management of installed mods on the system based on the user's subscriptions."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_EnableModManagement.png",src:i(69724).A+"",width:"227",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode K2_EnableModManagement(FOnModManagementDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-54",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsxs)(d.td,{children:["This callback handler will be invoked with a ",(0,s.jsx)(d.a,{href:"#modiomodmanagementevent",children:(0,s.jsx)(d.code,{children:"ModioModManagementEvent"})})," for each mod operation performed by the SDK"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-11",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["An error code indicating success or failure of enabling mod management. Note that this is independent of error codes for mod management events. Inspect the ",(0,s.jsx)(d.code,{children:"Callback"})," for information on each mod management event."]}),"\n",(0,s.jsx)(d.h5,{id:"error-values-34",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModManagementAlreadyEnabled"})}),(0,s.jsx)(d.td,{children:"Mod management was already enabled. The mod management callback has not been changed."})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"closetempmodset",children:"CloseTempModSet"}),"\n",(0,s.jsx)(d.p,{children:"Uninstall every temp mod unless the user is subscribed."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_CloseTempModSet.png",src:i(69252).A+"",width:"227",height:"124"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode K2_CloseTempModSet()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-34",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"mod-management-enabled"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"temp-mod-set-initialized"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-55",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-12",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["Error code indicating the status of the ",(0,s.jsx)(d.code,{children:"TempModSet"}),". Will be empty if it was successful"]}),"\n",(0,s.jsx)(d.h5,{id:"error-values-35",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModManagementDisabled"})}),(0,s.jsx)(d.td,{children:"Mod management not enabled"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TempModSetNotInitialized"})}),(0,s.jsxs)(d.td,{children:[(0,s.jsx)(d.code,{children:"TempModSet"})," not initialized"]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"clearuserdataasync",children:"ClearUserDataAsync"}),"\n",(0,s.jsx)(d.p,{children:"De-authenticates the current mod.io user for the current session, and clears all user-specific data stored on the current device. Any subscribed mods that are installed but do not have other local users subscribed will be uninstalled"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ClearUserDataAsync.png",src:i(36106).A+"",width:"227",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_ClearUserDataAsync(FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-35",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-56",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code indicating the outcome of clearing the user data. Error codes returned by this function are informative only - it will always succeed."})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-36",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"No authenticated user"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"authenticateuserexternalasync",children:"AuthenticateUserExternalAsync"}),"\n",(0,s.jsx)(d.p,{children:"Uses platform-specific authentication to associate a mod.io user account with the current platform user"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_AuthenticateUserExternalAsync.png",src:i(92223).A+"",width:"306",height:"242"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_AuthenticateUserExternalAsync(FModioAuthenticationParams User, EModioAuthenticationProvider Provider, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-36",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-authenticated-user"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-57",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"User"})}),(0,s.jsx)(d.td,{children:"Authentication payload data to submit to the provider"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Provider"})}),(0,s.jsx)(d.td,{children:"The provider to use to perform the authentication"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback invoked once the authentication request has been made"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-37",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ConfigurationError"})}),(0,s.jsx)(d.td,{children:"The SDK's configuration is not valid"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The arguments passed to the function have failed validation"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserTermsOfUseError"})}),(0,s.jsx)(d.td,{children:"The user has not yet accepted the mod.io Terms of Use"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserAlreadyAuthenticatedError"})}),(0,s.jsxs)(d.td,{children:["Current user is already authenticated. De-authenticate the current user with ",(0,s.jsx)(d.a,{href:"#clearuserdataasync",children:(0,s.jsx)(d.code,{children:"ClearUserDataAsync"})}),", and re-initialize the SDK by calling ",(0,s.jsx)(d.a,{href:"#shutdownasync",children:(0,s.jsx)(d.code,{children:"ShutdownAsync"})})," followed by ",(0,s.jsx)(d.a,{href:"#initializeasync",children:(0,s.jsx)(d.code,{children:"InitializeAsync"})}),"."]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"authenticateuseremailasync",children:"AuthenticateUserEmailAsync"}),"\n",(0,s.jsx)(d.p,{children:"Completes email authentication for the current session by submitting the one-time code sent to the user's email address"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_AuthenticateUserEmailAsync.png",src:i(29010).A+"",width:"251",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_AuthenticateUserEmailAsync(FModioEmailAuthCode AuthenticationCode, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-37",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-authenticated-user"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-58",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"AuthenticationCode"})}),(0,s.jsx)(d.td,{children:"User's authentication code"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code indicating if authentication was successful or not"})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-38",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserAlreadyAuthenticatedError"})}),(0,s.jsxs)(d.td,{children:["Current user is already authenticated. De-authenticate the current user with ",(0,s.jsx)(d.a,{href:"#clearuserdataasync",children:(0,s.jsx)(d.code,{children:"ClearUserDataAsync"})}),", and re-initialize the SDK by calling ",(0,s.jsx)(d.a,{href:"#shutdownasync",children:(0,s.jsx)(d.code,{children:"ShutdownAsync"})})," then ",(0,s.jsx)(d.a,{href:"#initializeasync",children:(0,s.jsx)(d.code,{children:"InitializeAsync"})}),"."]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"archivemodasync",children:"ArchiveModAsync"}),"\n",(0,s.jsx)(d.p,{children:"Archives a mod. This mod will no longer be able to be viewed or retrieved via the SDK, but it will still exist should you choose to restore it at a later date. Archiving is restricted to team managers and administrators only. Note that restoration and permanent deletion of a mod is possible only via web interface."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_ArchiveModAsync.png",src:i(6312).A+"",width:"227",height:"184"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_ArchiveModAsync(FModioModID Mod, FOnErrorOnlyDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-38",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"no-rate-limiting"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-59",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Mod"})}),(0,s.jsx)(d.td,{children:"The mod to be archived."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback providing a status code indicating success or failure of archiving the mod."})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"error-values-39",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InsufficientPermissions"})}),(0,s.jsx)(d.td,{children:"The authenticated user does not have permission to archive this mod. This action is restricted to team managers and administrators only."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"Couldn't connect to mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,s.jsx)(d.td,{children:"Specified mod does not exist or was deleted"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"The supplied mod ID is invalid"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"addtotempmodset",children:"AddToTempModSet"}),"\n",(0,s.jsxs)(d.p,{children:["Add mods to a Temp Mod Set. Every temp mod specified by ",(0,s.jsx)(d.code,{children:"ModIds"})," will be installed if not already installed."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_AddToTempModSet.png",src:i(60006).A+"",width:"227",height:"154"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode K2_AddToTempModSet(TArray ModIds)\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-39",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"mod-management-enabled"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"temp-mod-set-initialized"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-60",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModIds"})}),(0,s.jsxs)(d.td,{children:["TArray of ",(0,s.jsx)(d.code,{children:"ModioModID"}),"s to install as temp mods"]})]})]})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-13",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["Error code indicating the status of the ",(0,s.jsx)(d.code,{children:"TempModSet"}),". Will be empty if it was successful"]}),"\n",(0,s.jsx)(d.h5,{id:"error-values-40",children:"Error Values"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"SDK not initialized"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModManagementDisabled"})}),(0,s.jsx)(d.td,{children:"Mod management not enabled"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TempModSetNotInitialized"})}),(0,s.jsxs)(d.td,{children:[(0,s.jsx)(d.code,{children:"TempModSet"})," not initialized"]})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"is-using-background-thread",children:"Is Using Background Thread"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_IsUsingBackgroundThread.png",src:i(62286).A+"",width:"243",height:"124"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool IsUsingBackgroundThread()\n"})}),"\n",(0,s.jsx)(d.h4,{id:"is-mod-management-busy",children:"Is Mod Management Busy"}),"\n",(0,s.jsx)(d.p,{children:"Checks if the automatic management process is currently installing or removing mods"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_IsModManagementBusy.png",src:i(24896).A+"",width:"231",height:"124"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool IsModManagementBusy()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-61",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-14",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"True if automatic management is currently performing an operation"}),"\n",(0,s.jsx)(d.h4,{id:"get-last-validation-error",children:"Get Last Validation Error"}),"\n",(0,s.jsx)(d.p,{children:"If the last request to the mod.io servers returned a validation failure, this function returns extended information describing the fields that failed validation."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_GetLastValidationError.png",src:i(18781).A+"",width:"227",height:"124"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"TArray GetLastValidationError()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"requirements-40",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n"]}),"\n",(0,s.jsx)(d.h5,{id:"parameters-62",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.h5,{id:"returns-15",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["Collection of ",(0,s.jsx)(d.code,{children:"ModioValidationError"})," objects, or empty collection if there were no validation failures"]}),"\n",(0,s.jsx)(d.h4,{id:"disable-mod-management",children:"Disable Mod Management"}),"\n",(0,s.jsx)(d.p,{children:"Disables automatic installation or uninstallation of mods based on the user's subscriptions. Allows currently processing installation to complete. Will cancel any pending operations when called."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_DisableModManagement.png",src:i(23297).A+"",width:"231",height:"124"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void DisableModManagement()\n"})}),"\n",(0,s.jsx)(d.h5,{id:"parameters-63",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModioSubsystem"})})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiotokenpacklibrary",children:"ModioTokenPackLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-14",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiouienumlocalizationlibrary",children:"ModioUIEnumLocalizationLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-15",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiouilocalizationlibrary",children:"ModioUILocalizationLibrary"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-16",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64library",children:"ModioUnsigned64Library"}),"\n",(0,s.jsx)(d.h5,{id:"inheritance-hierarchy-17",children:"Inheritance Hierarchy"}),"\n",(0,s.jsx)(d.p,{children:"-> BlueprintFunctionLibrary-> Object"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h2,{id:"structs",children:"Structs"}),"\n",(0,s.jsx)(d.h3,{id:"modiogameinfolist",children:"ModioGameInfoList"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiogameinfo",children:"ModioGameInfo"}),"\n",(0,s.jsx)(d.h5,{id:"variables",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioGameID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameID"})}),(0,s.jsx)(d.td,{children:"Unique Game ID"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FDateTime"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DateAdded"})}),(0,s.jsx)(d.td,{children:"Unix timestamp of date the game was registered"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FDateTime"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DateUpdated"})}),(0,s.jsx)(d.td,{children:"Unix timestamp of date the game was updated"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FDateTime"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DateLive"})}),(0,s.jsx)(d.td,{children:"Unix timestamp of date the game was set live"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UgcName"})}),(0,s.jsx)(d.td,{children:"Word used to describe user-generated content (mods, items, add-ons etc)"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioIcon"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Icon"})}),(0,s.jsx)(d.td,{children:"Contains media URLs to the icon for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioLogo"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Logo"})}),(0,s.jsx)(d.td,{children:"Contains media URLs to the logo for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioHeaderImage"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"HeaderImage"})}),(0,s.jsx)(d.td,{children:"Contains media URLs to the preview header image for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Name"})}),(0,s.jsx)(d.td,{children:"Name of the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Summary"})}),(0,s.jsx)(d.td,{children:"Summary of the game's mod support"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Instructions"})}),(0,s.jsx)(d.td,{children:"A guide about creating and uploading mods for this game to mod.io"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InstructionsUrl"})}),(0,s.jsx)(d.td,{children:"Link to a mod.io guide, modding wiki, or a page where modders can learn how to make and submit mods to this game's profile"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileUrl"})}),(0,s.jsx)(d.td,{children:"URL to the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioTheme"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Theme"})}),(0,s.jsx)(d.td,{children:"Theme color values for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioGameStats"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Stats"})}),(0,s.jsx)(d.td,{children:"Numerous aggregate stats for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"OtherUrls"})}),(0,s.jsx)(d.td,{children:"Creator defined URLs to share"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Platforms"})}),(0,s.jsx)(d.td,{children:"Platforms that are supported by this title"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bAllowNegativeRatings"})}),(0,s.jsx)(d.td,{children:"Whether or not the game allows negative ratings"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EGameMonetizationFlags"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameMonetizationOptions"})}),(0,s.jsx)(d.td,{children:"Monetization options for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EGameMaturityFlags"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameMaturityOptions"})}),(0,s.jsx)(d.td,{children:"Maturity options for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"VirtualTokenName"})}),(0,s.jsx)(d.td,{children:"Name of the Virtual Tokens for this game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PlatformSupport"})}),(0,s.jsx)(d.td,{children:"Platforms that are supported by this title"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TagOptions"})}),(0,s.jsx)(d.td,{children:"Tags available for this game"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodtaginfo",children:"ModioModTagInfo"}),"\n",(0,s.jsx)(d.h5,{id:"variables-1",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TagGroupName"})}),(0,s.jsx)(d.td,{children:"Raw unlocalized tag group name"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TagGroupValues"})}),(0,s.jsx)(d.td,{children:"Valid raw unlocalized tag values this group contains"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TMap"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TagGroupNameLocalizationData"})}),(0,s.jsx)(d.td,{children:"Culture code -> localized tag category name mapping for all configured languages"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TagGroupValueLocalizationData"})}),(0,s.jsx)(d.td,{children:"Localization data for this tag category's values in all configured languages"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bAllowMultipleSelection"})}),(0,s.jsx)(d.td,{children:"True if multiple tags from the group can be used simultaneously"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bHidden"})}),(0,s.jsx)(d.td,{children:"True if only visible by admins"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bLocked"})}),(0,s.jsx)(d.td,{children:"TrueTrue if only editable by admins"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiolocalizedtagcategory",children:"ModioLocalizedTagCategory"}),"\n",(0,s.jsx)(d.p,{children:"Struct containing pre-localized display strings for a tag group"}),"\n",(0,s.jsx)(d.h5,{id:"variables-2",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GroupName"})}),(0,s.jsx)(d.td,{children:"Localized display string for this tag category's name"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Tags"})}),(0,s.jsx)(d.td,{children:"Localized display strings for all valid values in this tag category"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodtaglocalizationdata",children:"ModioModTagLocalizationData"}),"\n",(0,s.jsx)(d.p,{children:"Localization data for an individual tag value"}),"\n",(0,s.jsx)(d.h5,{id:"variables-3",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Tag"})}),(0,s.jsx)(d.td,{children:"The original raw unlocalized tag value used by the REST API"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TMap"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Translations"})}),(0,s.jsx)(d.td,{children:"Culture code -> Localized tag value string mapping for all configured languages."})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiogameplatform",children:"ModioGamePlatform"}),"\n",(0,s.jsx)(d.h5,{id:"variables-4",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioModfilePlatform"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Platform"})}),(0,s.jsx)(d.td,{children:"A platform supported by a title"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Locked"})}),(0,s.jsx)(d.td,{children:"Whether ot not this platform is locked from having files submitted to it by players"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Moderated"})}),(0,s.jsx)(d.td,{children:"Whether or not this platform's file submissions are moderated or not"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiootherurl",children:"ModioOtherUrl"}),"\n",(0,s.jsx)(d.h5,{id:"variables-5",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Label"})}),(0,s.jsx)(d.td,{children:"Label of the link you are sharing"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Url"})}),(0,s.jsx)(d.td,{children:"The URL to be associated with the label"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiogamestats",children:"ModioGameStats"}),"\n",(0,s.jsx)(d.p,{children:"Numerous aggregate stats for the game"}),"\n",(0,s.jsx)(d.h5,{id:"variables-6",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioGameID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameID"})}),(0,s.jsx)(d.td,{children:"Unique game id"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModCountTotal"})}),(0,s.jsx)(d.td,{children:"Available mod count for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModDownloadsToday"})}),(0,s.jsx)(d.td,{children:"Mods downloaded today for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModDownloadsTotal"})}),(0,s.jsx)(d.td,{children:"Total mods downloaded for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModDownloadsDailyAverage"})}),(0,s.jsx)(d.td,{children:"Average mods downloaded on a daily basis"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModSubscribersTotal"})}),(0,s.jsx)(d.td,{children:"Number of total users who have subscribed to the mods for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DateExpires"})}),(0,s.jsx)(d.td,{children:"Unix timestamp until this game's statistics are considered stale"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiogameid",children:"ModioGameID"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiotheme",children:"ModioTheme"}),"\n",(0,s.jsx)(d.h5,{id:"variables-7",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Primary"})}),(0,s.jsx)(d.td,{children:"The primary hex color code"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Dark"})}),(0,s.jsx)(d.td,{children:"The dark hex color code"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Light"})}),(0,s.jsx)(d.td,{children:"The light hex color code"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Success"})}),(0,s.jsx)(d.td,{children:"The success hex color code"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Warning"})}),(0,s.jsx)(d.td,{children:"The warning hex color code"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Danger"})}),(0,s.jsx)(d.td,{children:"The danger hex color code"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioheaderimage",children:"ModioHeaderImage"}),"\n",(0,s.jsx)(d.h5,{id:"variables-8",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Filename"})}),(0,s.jsx)(d.td,{children:"Header image filename including extension"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Original"})}),(0,s.jsx)(d.td,{children:"URL to the full-sized header image"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiologo",children:"ModioLogo"}),"\n",(0,s.jsx)(d.h5,{id:"variables-9",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Filename"})}),(0,s.jsx)(d.td,{children:"Logo filename including extension."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Original"})}),(0,s.jsx)(d.td,{children:"URL to the full - sized logo."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb320x180"})}),(0,s.jsx)(d.td,{children:"URL to the small logo thumbnail."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb640x360"})}),(0,s.jsx)(d.td,{children:"URL to the medium logo thumbnail."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb1280x720"})}),(0,s.jsx)(d.td,{children:"URL to the large logo thumbnail."})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioicon",children:"ModioIcon"}),"\n",(0,s.jsx)(d.h5,{id:"variables-10",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Filename"})}),(0,s.jsx)(d.td,{children:"Icon filename including extension."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Original"})}),(0,s.jsx)(d.td,{children:"URL to the full-sized icon."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb64x64"})}),(0,s.jsx)(d.td,{children:"URL to the small icon thumbnail."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb128x128"})}),(0,s.jsx)(d.td,{children:"URL to the medium icon thumbnail."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb256x256"})}),(0,s.jsx)(d.td,{children:"URL to the large icon thumbnail."})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiopagedresult",children:"ModioPagedResult"}),"\n",(0,s.jsx)(d.h5,{id:"variables-11",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int32"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PageIndex"})}),(0,s.jsx)(d.td,{children:"The index of this page"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int32"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PageSize"})}),(0,s.jsx)(d.td,{children:"The amount of results allowed to be displayed within a page"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int32"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PageCount"})}),(0,s.jsx)(d.td,{children:"The total amount of pages"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int32"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TotalResultCount"})}),(0,s.jsx)(d.td,{children:"The total amount of results"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int32"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ResultCount"})}),(0,s.jsx)(d.td,{children:"The amount of results for this page"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodinfolist",children:"ModioModInfoList"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodinfo",children:"ModioModInfo"}),"\n",(0,s.jsx)(d.h5,{id:"variables-12",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioModID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModId"})}),(0,s.jsx)(d.td,{children:"Unique Mod ID"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileName"})}),(0,s.jsx)(d.td,{children:"Name of the mod"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileSummary"})}),(0,s.jsx)(d.td,{children:"Summary of the mod"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileDescription"})}),(0,s.jsx)(d.td,{children:"Detailed description in HTML format"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileDescriptionPlaintext"})}),(0,s.jsx)(d.td,{children:"Detailed description in plaintext"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileURL"})}),(0,s.jsx)(d.td,{children:"URL to the mod profile"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioUser"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileSubmittedBy"})}),(0,s.jsx)(d.td,{children:"Information on the user who submitted the mod"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FDateTime"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileDateAdded"})}),(0,s.jsx)(d.td,{children:"Unix timestamp of the date the mod was registered"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FDateTime"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileDateUpdated"})}),(0,s.jsx)(d.td,{children:"Unix timestamp of the date the mod was updated"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FDateTime"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileDateLive"})}),(0,s.jsx)(d.td,{children:"Unix timestamp of the date the mod was marked live"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioMaturityFlags"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileMaturityOption"})}),(0,s.jsx)(d.td,{children:"Flags for maturity options. Maturity options are flagged by the mod developer. This is only relevant if the parent game allows mods to be labeled as mature."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.del,{children:(0,s.jsx)(d.code,{children:"bVisible_DEPRECATED"})})}),(0,s.jsxs)(d.td,{children:["Deprecated as of 2023.6 release. Please use ",(0,s.jsx)(d.code,{children:"EModioObjectVisibilityFlags Visibility"})," instead."]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioObjectVisibilityFlags"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Visibility"})}),(0,s.jsx)(d.td,{children:"Enum parameter to signal the backend if the mod to upload would be publicly visible. Default value is Public"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Dependencies"})}),(0,s.jsx)(d.td,{children:"If this mod has any dependencies"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MetadataBlob"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioFileMetadata"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FileInfo"})}),(0,s.jsx)(d.td,{children:"Information about the mod's most recent public release"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MetadataKvp"})}),(0,s.jsx)(d.td,{children:"Arbitrary key-value metadata set for this mod"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Tags"})}),(0,s.jsx)(d.td,{children:"Tags this mod has set"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int32"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NumGalleryImages"})}),(0,s.jsx)(d.td,{children:"Number of images in the mod's media gallery"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioYoutubeURLList"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"YoutubeURLs"})}),(0,s.jsx)(d.td,{children:"List of youtube links provided by the creator of the mod"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioSketchfabURLList"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SketchfabURLs"})}),(0,s.jsx)(d.td,{children:"List of sketchfab links provided by the creator of the mod"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioModStats"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Stats"})}),(0,s.jsx)(d.td,{children:"Stats and rating information for the mod"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioModServerSideStatus"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModStatus"})}),(0,s.jsx)(d.td,{children:"Status of the mod"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioUnsigned64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Price"})}),(0,s.jsx)(d.td,{children:"Price of this mod"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64",children:"ModioUnsigned64"}),"\n",(0,s.jsx)(d.p,{children:"Trivial Blueprint-compatible wrapper around an unsigned 64-bit integer"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodstats",children:"ModioModStats"}),"\n",(0,s.jsx)(d.p,{children:"Contains download stats and ratings for a mod"}),"\n",(0,s.jsx)(d.h5,{id:"variables-13",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PopularityRankPosition"})}),(0,s.jsx)(d.td,{children:"Current rank of the mod."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PopularityRankTotalMods"})}),(0,s.jsx)(d.td,{children:"Number of ranking spots the current rank is measured against."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DownloadsTotal"})}),(0,s.jsx)(d.td,{children:"Number of total mod downloads."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SubscribersTotal"})}),(0,s.jsx)(d.td,{children:"Number of total users who have subscribed to the mod."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RatingTotal"})}),(0,s.jsx)(d.td,{children:"Number of times this mod has been rated."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RatingPositive"})}),(0,s.jsx)(d.td,{children:"Number of positive ratings."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RatingNegative"})}),(0,s.jsx)(d.td,{children:"Number of negative ratings."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RatingPercentagePositive"})}),(0,s.jsx)(d.td,{children:"Number of positive ratings, divided by the total ratings to determine it\u2019s percentage score."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"float"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RatingWeightedAggregate"})}),(0,s.jsxs)(d.td,{children:["Overall rating of this item calculated using the ",(0,s.jsx)(d.a,{href:"https://www.evanmiller.org/how-not-to-sort-by-average-Ratinghtml",children:"Wilson score confidence interval"}),". This column is good to sort on, as it will order items based on number of ratings and will place items with many positive ratings above those with a higher score but fewer ratings. We actually get a double back from the server, but it's converted to a float for blueprint support"]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RatingDisplayText"})}),(0,s.jsx)(d.td,{children:"Textual representation of the rating in format: Overwhelmingly Positive -> Very Positive -> Positive -> Mostly Positive -> Mixed -> Negative -> Mostly Negative -> Very Negative -> Overwhelmingly Negative -> Unrated"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiosketchfaburllist",children:"ModioSketchfabURLList"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioyoutubeurllist",children:"ModioYoutubeURLList"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodtag",children:"ModioModTag"}),"\n",(0,s.jsx)(d.h5,{id:"variables-14",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Tag"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FText"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TagLocalized"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiometadata",children:"ModioMetadata"}),"\n",(0,s.jsx)(d.h5,{id:"variables-15",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Key"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Value"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiofilemetadata",children:"ModioFileMetadata"}),"\n",(0,s.jsx)(d.p,{children:"Metadata for a release archive for a mod"}),"\n",(0,s.jsx)(d.h5,{id:"variables-16",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioFileMetadataID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MetadataId"})}),(0,s.jsx)(d.td,{children:"Unique modfile id."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioModID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModId"})}),(0,s.jsx)(d.td,{children:"Unique mod id."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FDateTime"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DateAdded"})}),(0,s.jsx)(d.td,{children:"Unix timestamp of date file was added."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioVirusScanStatus"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"CurrentVirusScanStatus"})}),(0,s.jsx)(d.td,{children:"Current virus scan status of the file. For newly added files that have yet to be scanned this field will change frequently until a scan is complete"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioVirusStatus"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"CurrentVirusStatus"})}),(0,s.jsx)(d.td,{children:"Was a virus detected?"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Filesize"})}),(0,s.jsx)(d.td,{children:"Size of the file in bytes."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FilesizeUncompressed"})}),(0,s.jsx)(d.td,{children:"Total size of all files in the mod after installation."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Filename"})}),(0,s.jsx)(d.td,{children:"Filename including extension."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Version"})}),(0,s.jsx)(d.td,{children:"Release version this file represents."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Changelog"})}),(0,s.jsx)(d.td,{children:"Changelog for the file."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MetadataBlob"})}),(0,s.jsx)(d.td,{children:"Metadata stored by the game developer for this file."})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodid",children:"ModioModID"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiofilemetadataid",children:"ModioFileMetadataID"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiouser",children:"ModioUser"}),"\n",(0,s.jsx)(d.h5,{id:"variables-17",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioUserID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserId"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Username"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FDateTime"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DateOnline"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ProfileUrl"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DisplayNamePortal"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiouserid",children:"ModioUserID"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodtagoptions",children:"ModioModTagOptions"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiotokenpacklist",children:"ModioTokenPackList"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiotokenpack",children:"ModioTokenPack"}),"\n",(0,s.jsx)(d.p,{children:"A wrapper type around the Unreal Engine type FOnlineStoreOffer, representing a platform-agnostic store offer/product, e.g a Premium Currency pack."}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioerrorcode",children:"ModioErrorCode"}),"\n",(0,s.jsxs)(d.p,{children:["Wrapper around ",(0,s.jsx)(d.code,{children:"Modio::ErrorCode"})]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalgameinfo",children:"ModioOptionalGameInfo"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalimage",children:"ModioOptionalImage"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalmoddependencylist",children:"ModioOptionalModDependencyList"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalmodinfo",children:"ModioOptionalModInfo"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalmodtagoptions",children:"ModioOptionalModTagOptions"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalterms",children:"ModioOptionalTerms"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionaluint64",children:"ModioOptionalUInt64"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalmodinfolist",children:"ModioOptionalModInfoList"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalgameinfolist",children:"ModioOptionalGameInfoList"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodmanagementevent",children:"ModioModManagementEvent"}),"\n",(0,s.jsx)(d.p,{children:"Simple struct representing the outcome of a mod management operation"}),"\n",(0,s.jsx)(d.h5,{id:"variables-18",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioModID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ID"})}),(0,s.jsx)(d.td,{children:"ID for the mod that the event occurred on"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioModManagementEventType"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Event"})}),(0,s.jsx)(d.td,{children:"What type of event occurred"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioErrorCode"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Status"})}),(0,s.jsx)(d.td,{children:"Empty if operation completed successfully, truthy/contains error code if operation failed"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionaluserlist",children:"ModioOptionalUserList"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalmodchangemap",children:"ModioOptionalModChangeMap"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionaltransactionrecord",children:"ModioOptionalTransactionRecord"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalentitlementconsumptionstatuslist",children:"ModioOptionalEntitlementConsumptionStatusList"}),"\n",(0,s.jsx)(d.p,{children:"Optional class representing a list of entitlement consumption statuses that may be a page from a larger set of results"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalmodid",children:"ModioOptionalModID"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioauthenticationparams",children:"ModioAuthenticationParams"}),"\n",(0,s.jsx)(d.p,{children:"Simple struct to encapsulate data passed to external authentication systems"}),"\n",(0,s.jsx)(d.h5,{id:"variables-19",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"AuthToken"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserEmail"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bUserHasAcceptedTerms"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TMap"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ExtendedParameters"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioapikey",children:"ModioApiKey"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioguid",children:"ModioGuid"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalguid",children:"ModioOptionalGuid"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioemailaddress",children:"ModioEmailAddress"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioemailauthcode",children:"ModioEmailAuthCode"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioentitlementparams",children:"ModioEntitlementParams"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiometricssessionparams",children:"ModioMetricsSessionParams"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiotokenpackid",children:"ModioTokenPackID"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiocreatemodfileparams",children:"ModioCreateModFileParams"}),"\n",(0,s.jsx)(d.h5,{id:"variables-20",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PathToModRootDirectory"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiocreatemodparams",children:"ModioCreateModParams"}),"\n",(0,s.jsx)(d.h5,{id:"variables-21",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PathToLogoFile"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Name"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Summary"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioeditmodparams",children:"ModioEditModParams"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioentitlementwalletbalance",children:"ModioEntitlementWalletBalance"}),"\n",(0,s.jsx)(d.p,{children:"Updated wallet balance from the sync entitlements call"}),"\n",(0,s.jsx)(d.h5,{id:"variables-22",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioUnsigned64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Balance"})}),(0,s.jsx)(d.td,{children:"The updated balance of the wallet"})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalentitlementwalletbalance",children:"ModioOptionalEntitlementWalletBalance"}),"\n",(0,s.jsx)(d.p,{children:"Optional updated wallet balance from the sync entitlements call"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioentitlementconsumptionvirtualcurrencydetails",children:"ModioEntitlementConsumptionVirtualCurrencyDetails"}),"\n",(0,s.jsx)(d.p,{children:"Further details about a Virtual Currency entitlement that was consumed"}),"\n",(0,s.jsx)(d.h5,{id:"variables-23",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int32"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TokensAllocated"})}),(0,s.jsx)(d.td,{children:"Amount of tokens that were issued for this specific entitlement consumption"})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"entitlementconsumptionstatus",children:"EntitlementConsumptionStatus"}),"\n",(0,s.jsx)(d.p,{children:"The result of an entitlement's consumption"}),"\n",(0,s.jsx)(d.h5,{id:"variables-24",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TransactionId"})}),(0,s.jsx)(d.td,{children:"ID of the transaction to redeem this entitlement"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioEntitlementConsumptionState"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TransactionState"})}),(0,s.jsx)(d.td,{children:"State of the transaction"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SkuId"})}),(0,s.jsx)(d.td,{children:"ID of the SKU that we attempted to consume"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntitlementConsumed"})}),(0,s.jsx)(d.td,{children:"Whether this entitlement was consumed or not"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioEntitlementType"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntitlementType"})}),(0,s.jsx)(d.td,{children:"Type of Entitlement that was consumed"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioEntitlementConsumptionVirtualCurrencyDetails"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"VirtualCurrencyDetails"})}),(0,s.jsx)(d.td,{children:"Details about virtual currency entitlement consumption"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioentitlementconsumptionstatuslist",children:"ModioEntitlementConsumptionStatusList"}),"\n",(0,s.jsx)(d.p,{children:"Class representing a list of entitlement consumption statuses that may be a page from a larger set of results"}),"\n",(0,s.jsx)(d.h5,{id:"variables-25",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioPagedResult"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PagedResult"})}),(0,s.jsx)(d.td,{children:"Stored property for a paged result, which provides context on the entitlement consumption status list"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InternalList"})}),(0,s.jsx)(d.td,{children:"Stored property for the dependency list"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioOptionalEntitlementWalletBalance"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"WalletBalance"})}),(0,s.jsx)(d.td,{children:"Updated wallet balance from syncing entitlements"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiofilterparams",children:"ModioFilterParams"}),"\n",(0,s.jsxs)(d.p,{children:["Class storing a set of filter parameters for use in ",(0,s.jsx)(d.a,{href:"#listallmodsasync",children:(0,s.jsx)(d.code,{children:"ListAllModsAsync"})})]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiopresetfilterparams",children:"ModioPresetFilterParams"}),"\n",(0,s.jsx)(d.p,{children:"Helper struct for named preset filter parameters"}),"\n",(0,s.jsx)(d.h5,{id:"variables-26",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FText"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PresetName"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Tags"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ExcludedTags"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioSortDirection"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Direction"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioSortFieldType"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SortField"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Count"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioimagewrapper",children:"ModioImageWrapper"}),"\n",(0,s.jsx)(d.h5,{id:"variables-27",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ImagePath"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioinitializeoptions",children:"ModioInitializeOptions"}),"\n",(0,s.jsx)(d.h5,{id:"variables-28",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioGameID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameId"})}),(0,s.jsx)(d.td,{children:"The mod.io-provided ID for the game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioApiKey"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ApiKey"})}),(0,s.jsx)(d.td,{children:"The mod.io-provided API key for your application or game"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioEnvironment"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameEnvironment"})}),(0,s.jsx)(d.td,{children:"The mod.io environment you want to run the SDK on"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioPortal"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PortalInUse"})}),(0,s.jsx)(d.td,{children:"The portal your title is running through"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TMap"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ExtendedInitializationParameters"})}),(0,s.jsx)(d.td,{children:"Extended platform-specific initialization parameters. Refer to the platform documentation for valid keys and their values. Unrecognized values will be ignored"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bUseBackgroundThread"})}),(0,s.jsx)(d.td,{children:"Set mod.io to run with background thread"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodchangemap",children:"ModioModChangeMap"}),"\n",(0,s.jsx)(d.h5,{id:"variables-29",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TMap"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Changes"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodcollectionentry",children:"ModioModCollectionEntry"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodcreationhandle",children:"ModioModCreationHandle"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomoddependency",children:"ModioModDependency"}),"\n",(0,s.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,s.jsx)(d.p,{children:"This class is part of an experimental feature and is subject to change."})}),"\n",(0,s.jsx)(d.h5,{id:"variables-30",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioModID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModID"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModName"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FDateTime"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DateAdded"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FDateTime"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DateUpdated"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"uint8"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DependencyDepth"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioLogo"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Logo"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioFileMetadata"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FileInfo"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioModServerSideStatus"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Status"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EModioObjectVisibilityFlags"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Visibility"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomoddependencylist",children:"ModioModDependencyList"}),"\n",(0,s.jsx)(d.admonition,{title:"Experimental Feature",type:"warning",children:(0,s.jsx)(d.p,{children:"This class is part of an experimental feature and is subject to change."})}),"\n",(0,s.jsx)(d.h5,{id:"variables-31",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioPagedResult"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PagedResult"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InternalList"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TotalFilesize"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"int64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TotalFilesizeUncompressed"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodprogressinfo",children:"ModioModProgressInfo"}),"\n",(0,s.jsx)(d.h5,{id:"variables-32",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioModID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ID"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionalmodprogressinfo",children:"ModioOptionalModProgressInfo"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioreportparams",children:"ModioReportParams"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiolink",children:"ModioLink"}),"\n",(0,s.jsx)(d.h5,{id:"variables-33",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Text"})}),(0,s.jsx)(d.td,{children:"The user-facing text for the link"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"URL"})}),(0,s.jsx)(d.td,{children:"The actual URL for the link"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bool"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bRequired"})}),(0,s.jsx)(d.td,{children:"Is displaying this link mandatory?"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modioterms",children:"ModioTerms"}),"\n",(0,s.jsx)(d.h5,{id:"variables-34",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"AgreeButtonText"})}),(0,s.jsx)(d.td,{children:"Text to display on the affirmative/OK button"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DisagreeButtonText"})}),(0,s.jsx)(d.td,{children:"Text to display on the negative/cancel button"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioLink"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"WebsiteLink"})}),(0,s.jsx)(d.td,{children:"Link to the mod.io website"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioLink"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TermsLink"})}),(0,s.jsx)(d.td,{children:"Link to the mod.io terms of use"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioLink"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PrivacyLink"})}),(0,s.jsx)(d.td,{children:"Link to the mod.io Privacy Policy"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioLink"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ManageLink"})}),(0,s.jsx)(d.td,{children:"Link to the mod.io Manage User Account page"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TermsText"})}),(0,s.jsx)(d.td,{children:"The plaintext version of the mod.io terms of use"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionaltokenpack",children:"ModioOptionalTokenPack"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionaltokenpacklist",children:"ModioOptionalTokenPackList"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiotransactionrecord",children:"ModioTransactionRecord"}),"\n",(0,s.jsx)(d.h5,{id:"variables-35",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioModID"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"AssociatedModID"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioUnsigned64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Price"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioUnsigned64"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UpdatedUserWalletBalance"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiooptionaluser",children:"ModioOptionalUser"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiouserlist",children:"ModioUserList"}),"\n",(0,s.jsx)(d.h5,{id:"variables-36",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FModioPagedResult"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PagedResult"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InternalList"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiovalidationerror",children:"ModioValidationError"}),"\n",(0,s.jsx)(d.p,{children:"Wrapper struct containing information about a field validation error"}),"\n",(0,s.jsx)(d.h5,{id:"variables-37",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FieldName"})}),(0,s.jsx)(d.td,{children:"String description of the field that failed validation"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FString"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ValidationFailureDescription"})}),(0,s.jsx)(d.td,{children:"String description of the validation failure"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiocreatemodfilememoryparams",children:"ModioCreateModFileMemoryParams"}),"\n",(0,s.jsx)(d.h5,{id:"variables-38",children:"Variables"}),"\n",(0,s.jsx)(n,{colWidths:["10%","10%","20%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TArray"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModMemory"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h2,{id:"functions",children:"Functions"}),"\n",(0,s.jsx)(d.h3,{id:"set-session-identifier",children:"Set Session Identifier"}),"\n",(0,s.jsxs)(d.p,{children:["Changes the session identifier for the provided set of ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetSessionIdentifier.png",src:i(73569).A+"",width:"297",height:"111"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetSessionIdentifier(FModioInitializeOptions Options, FString SessionIdentifier)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-64",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Options"})}),(0,s.jsxs)(d.td,{children:["The template ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SessionIdentifier"})}),(0,s.jsx)(d.td,{children:"The new session id to use"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-16",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["New ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the session identifier set to the desired value"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-session-id",children:"Set Session Id"}),"\n",(0,s.jsx)(d.p,{children:"Changes the session identifier for the provided Metrics Session parameters"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetSessionId.png",src:i(9731).A+"",width:"224",height:"106"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioMetricsSessionParams SetSessionId(FModioMetricsSessionParams Params, FModioGuid Id)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-65",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Params"})}),(0,s.jsx)(d.td,{children:"The template Metrics Session parameters"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Id"})}),(0,s.jsx)(d.td,{children:"The intended Guid to store in the Metrics Session parameters"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-portal",children:"Set Portal"}),"\n",(0,s.jsxs)(d.p,{children:["Changes the portal for the provided set of ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetPortal.png",src:i(21880).A+"",width:"379",height:"134"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetPortal(FModioInitializeOptions Options, EModioPortal PortalToUse)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-66",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Options"})}),(0,s.jsxs)(d.td,{children:["The template ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PortalToUse"})}),(0,s.jsx)(d.td,{children:"The new portal to use"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-17",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["New ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the portal set to the desired value"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-game-id",children:"Set Game Id"}),"\n",(0,s.jsxs)(d.p,{children:["Changes the game id for the provided set of ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetGameId.png",src:i(45671).A+"",width:"249",height:"111"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetGameId(FModioInitializeOptions Options, int64 GameId)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-67",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Options"})}),(0,s.jsxs)(d.td,{children:["The template ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameId"})}),(0,s.jsx)(d.td,{children:"The new game id to use"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-18",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["New ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the game id set to the desired value"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-game-environment",children:"Set Game Environment"}),"\n",(0,s.jsxs)(d.p,{children:["Changes the game environment for the provided set of ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetGameEnvironment.png",src:i(80201).A+"",width:"379",height:"134"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetGameEnvironment(FModioInitializeOptions Options, EModioEnvironment GameEnvironment)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-68",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Options"})}),(0,s.jsxs)(d.td,{children:["The template ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameEnvironment"})}),(0,s.jsx)(d.td,{children:"The new environment to use"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-19",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["New ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the game environment set to the desired value"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-extended-initialization-parameters",children:"Set Extended Initialization Parameters"}),"\n",(0,s.jsxs)(d.p,{children:["Sets extended initialization parameters for the provided set of ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetExtendedInitializationParameters.png",src:i(38945).A+"",width:"304",height:"108"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetExtendedInitializationParameters(FModioInitializeOptions Options, TMap ExtendedParameters)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-69",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Options"})}),(0,s.jsxs)(d.td,{children:["The template ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ExtendedParameters"})}),(0,s.jsx)(d.td,{children:"The new extended parameters to use (will overwrite existing values)"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-20",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["New ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the extended parameters set to the desired value"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-background-thread",children:"Set Background Thread"}),"\n",(0,s.jsxs)(d.p,{children:["Changes the background thread usage for the provided set of ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetBackgroundThread.png",src:i(92422).A+"",width:"312",height:"124"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetBackgroundThread(FModioInitializeOptions Options, bool bUseBackgroundThread)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-70",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Options"})}),(0,s.jsxs)(d.td,{children:["The template ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bUseBackgroundThread"})}),(0,s.jsx)(d.td,{children:"Whether to use a background thread"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-21",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["New ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the background thread usage set to the desired value"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-api-key",children:"Set API Key"}),"\n",(0,s.jsxs)(d.p,{children:["Changes the API key for the provided set of ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_SetAPIKey.png",src:i(16659).A+"",width:"244",height:"111"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions SetAPIKey(FModioInitializeOptions Options, FString APIKey)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-71",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Options"})}),(0,s.jsxs)(d.td,{children:["The template ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"APIKey"})}),(0,s.jsx)(d.td,{children:"The new API key to use"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-22",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["New ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})})," object with the API key set to the desired value"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodid--modiomodid",children:"ModioModID != ModioModID"}),"\n",(0,s.jsx)(d.p,{children:"Compares two mod IDs to check whether they're not equal"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_NotEqualTo.png",src:i(42690).A+"",width:"159",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool NotEqualTo(FModioModID A, FModioModID B)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-72",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"A"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"B"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"make-metrics-session-params",children:"Make Metrics Session Params"}),"\n",(0,s.jsx)(d.p,{children:"Create Metrics Session parameters"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeMetricsSessionParams.png",src:i(80709).A+"",width:"258",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioMetricsSessionParams MakeMetricsSessionParams(TArray Ids)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-73",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Ids"})}),(0,s.jsx)(d.td,{children:"The list of mods to store within the Metrics Session parameters"})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"make-initialize-options",children:"Make Initialize Options"}),"\n",(0,s.jsxs)(d.p,{children:["Make ",(0,s.jsx)(d.a,{href:"#modioinitializeoptions",children:(0,s.jsx)(d.code,{children:"ModioInitializeOptions"})}),". Should only be used in conjunction with ",(0,s.jsx)(d.a,{href:"#initializeasync",children:(0,s.jsx)(d.code,{children:"InitializeAsync"})}),"."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeInitializeOptions.png",src:i(50900).A+"",width:"379",height:"280"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions MakeInitializeOptions(int64 GameId, FString APIKey, EModioEnvironment GameEnvironment, EModioPortal PortalInUse, bool bUseBackgroundThread)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-74",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameId"})}),(0,s.jsxs)(d.td,{children:["A positive integer that maps to your game. This can be found in the admin section of your game's page at ",(0,s.jsx)(d.a,{href:"https://mod.io/",children:"https://mod.io/"})]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"APIKey"})}),(0,s.jsxs)(d.td,{children:["The API key for your game. This can be found in the admin section of your game's page at ",(0,s.jsx)(d.a,{href:"https://mod.io/",children:"https://mod.io/"})]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameEnvironment"})}),(0,s.jsx)(d.td,{children:"The environment your game has been set up on: test or live."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PortalInUse"})}),(0,s.jsxs)(d.td,{children:["The ",(0,s.jsx)(d.a,{href:"#EModioPortal",children:(0,s.jsx)(d.code,{children:"EModioPortal"})})," representing the store or service your game is being"]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bUseBackgroundThread"})}),(0,s.jsxs)(d.td,{children:["Whether to run the mod.io SDK on a background thread. Defaults to ",(0,s.jsx)(d.code,{children:"true"}),". distributed through. Defaults to ",(0,s.jsx)(d.code,{children:"EModioPortal::None"}),"."]})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"make-guid",children:"Make Guid"}),"\n",(0,s.jsx)(d.p,{children:"Create a Guid from a string"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeGuid.png",src:i(1237).A+"",width:"230",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioGuid MakeGuid(FString Guid)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-75",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Guid"})}),(0,s.jsx)(d.td,{children:"A string to wrap within a Guid struct"})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"make-game-id",children:"Make Game Id"}),"\n",(0,s.jsxs)(d.p,{children:["Create a game id from a integer. Should only be used in conjunction with ",(0,s.jsx)(d.a,{href:"#initializeasync",children:(0,s.jsx)(d.code,{children:"InitializeAsync"})})]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeGameId.png",src:i(94923).A+"",width:"249",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioGameID MakeGameId(int64 GameId)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-76",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameId"})}),(0,s.jsx)(d.td,{children:"A positive integer that maps to your game"})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"make-entitlement-params",children:"Make Entitlement Params"}),"\n",(0,s.jsx)(d.p,{children:"Create entitlement parameters"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeEntitlementParams.png",src:i(21735).A+"",width:"303",height:"78"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioEntitlementParams MakeEntitlementParams(TMap ExtendedParameters)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-77",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ExtendedParameters"})}),(0,s.jsx)(d.td,{children:"A map to store extended parameters required by some portals"})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"make-auth-params",children:"Make Auth Params"}),"\n",(0,s.jsxs)(d.p,{children:["Creates a ",(0,s.jsx)(d.code,{children:"ModioAuthenticationParams"})," object"]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeAuthParams.png",src:i(36342).A+"",width:"306",height:"150"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioAuthenticationParams MakeAuthParams(FString AuthToken, FString EmailAddress, bool bHasAcceptedTOS)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-78",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"AuthToken"})}),(0,s.jsx)(d.td,{children:"Authentication provider-supplied OAuth token"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EmailAddress"})}),(0,s.jsx)(d.td,{children:"User email address, can be left blank"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bHasAcceptedTOS"})}),(0,s.jsx)(d.td,{children:"Has the user been shown the Terms of Service and accepted the Terms of Service?"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-23",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["The constructed ",(0,s.jsx)(d.code,{children:"ModioAuthenticationParams"})," object for use with ",(0,s.jsx)(d.a,{href:"#authenticateuserexternalasync",children:(0,s.jsx)(d.code,{children:"AuthenticateUserExternalAsync"})})]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"make-api-key",children:"Make Api Key"}),"\n",(0,s.jsxs)(d.p,{children:["Create an ApiKey id from a string. Should only be used in conjunction with ",(0,s.jsx)(d.a,{href:"#initializeasync",children:(0,s.jsx)(d.code,{children:"InitializeAsync"})})]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_MakeApiKey.png",src:i(89887).A+"",width:"246",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioApiKey MakeApiKey(FString ApiKey)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-79",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ApiKey"})}),(0,s.jsx)(d.td,{children:"The api key from your settings panel on mod.io"})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-raw-value-from-mod-id",children:"Get Raw Value from Mod ID"}),"\n",(0,s.jsxs)(d.p,{children:["Retrieves the raw underlying value from an ",(0,s.jsx)(d.code,{children:"ModioModID"}),". ",(0,s.jsx)(d.code,{children:"ModioModID"}),"s are intended as opaque types, so use with care."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_GetRawValueFromModID.png",src:i(59892).A+"",width:"240",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"int64 GetRawValueFromModID(FModioModID In)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-80",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"In"})}),(0,s.jsxs)(d.td,{children:["The ",(0,s.jsx)(d.code,{children:"ModioModID"})," to retrieve the value for"]})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-24",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"The underlying value"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiomodid--modiomodid-1",children:"ModioModID == ModioModID"}),"\n",(0,s.jsx)(d.p,{children:"Compares two mod IDs to check whether they're equal"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCommonTypesLibrary_EqualTo.png",src:i(73149).A+"",width:"159",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool EqualTo(FModioModID A, FModioModID B)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-81",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"A"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"B"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-version-string",children:"Set Version String"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetVersionString.png",src:i(71105).A+"",width:"186",height:"143"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetVersionString(FModioCreateModFileParams In, FString Version)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-tags",children:"Set Tags"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetTags.png",src:i(40007).A+"",width:"137",height:"138"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetTags(FModioCreateModParams In, TArray Tags)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-modfile-platforms",children:"Set Modfile Platforms"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetModfilePlatforms.png",src:i(94646).A+"",width:"208",height:"138"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetModfilePlatforms(FModioCreateModFileParams In, TArray Platforms)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-mod-file-metadata-blob",children:"Set Mod File Metadata Blob"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetModFileMetadataBlob.png",src:i(32566).A+"",width:"239",height:"143"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetModFileMetadataBlob(FModioCreateModFileParams In, FString MetadataBlob)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-metadata-blob",children:"Set Metadata Blob"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetMetadataBlob.png",src:i(10318).A+"",width:"212",height:"143"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetMetadataBlob(FModioCreateModParams In, FString MetadataBlob)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-mark-as-active-release",children:"Set Mark as Active Release"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetMarkAsActiveRelease.png",src:i(74678).A+"",width:"258",height:"142"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetMarkAsActiveRelease(FModioCreateModFileParams In, bool bMarkAsActiveRelease)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-initial-visibility-deprecated",children:"Set Initial Visibility DEPRECATED"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetInitialVisibility_DEPRECATED.png",src:i(65268).A+"",width:"269",height:"142"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetInitialVisibility_DEPRECATED(FModioCreateModParams In, bool InitialVisibility)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-initial-visibility",children:"Set Initial Visibility"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetInitialVisibility.png",src:i(40594).A+"",width:"306",height:"166"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetInitialVisibility(FModioCreateModParams In, EModioObjectVisibilityFlags InitialVisibility)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-homepage-url",children:"Set Homepage URL"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetHomepageURL.png",src:i(58589).A+"",width:"216",height:"143"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetHomepageURL(FModioCreateModParams In, FString HomepageURL)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-description",children:"Set Description"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetDescription.png",src:i(21900).A+"",width:"193",height:"143"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetDescription(FModioCreateModParams In, FString Description)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"set-changelog-string",children:"Set Changelog String"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioCreateModLibrary_SetChangelogString.png",src:i(62283).A+"",width:"202",height:"143"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void SetChangelogString(FModioCreateModFileParams In, FString Changelog)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-localized-text-for-enum-by-name",children:"Get Localized Text for Enum by Name"}),"\n",(0,s.jsxs)(d.p,{children:["Returns the string table ",(0,s.jsx)(d.code,{children:"FText"})," for a given enum value's ",(0,s.jsx)(d.code,{children:"FName"}),". Only works with enums registered via ",(0,s.jsx)(d.code,{children:"ModioUI::RegisterEnumAsLocalizable"}),"."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUIEnumLocalizationLibrary_GetLocalizedTextForEnumByName.png",src:i(89670).A+"",width:"298",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FText GetLocalizedTextForEnumByName(FName EnumName)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-82",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EnumName"})}),(0,s.jsx)(d.td,{children:"The Name from a given enum value"})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-25",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"localized Text for the specified enum value, or dummy FText if not found"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"filesizetotext-unsigned64",children:"FileSizeToText (Unsigned64)"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUIEnumLocalizationLibrary_FileSizeUnsigned64_ToText.png",src:i(42575).A+"",width:"441",height:"197"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FText FileSizeUnsigned64_ToText(FModioUnsigned64 FileSize, int32 MinDecimals, int32 MaxDecimals, TEnumAsByte Unit, bool bIncludeUnitName)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-83",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FileSize"})}),(0,s.jsx)(d.td,{children:"Filesize in bytes"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MinDecimals"})}),(0,s.jsx)(d.td,{children:"Minimum number of decimals to display for the filesize"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MaxDecimals"})}),(0,s.jsx)(d.td,{children:"Maximum number of decimals to display for the filesize"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Unit"})}),(0,s.jsxs)(d.td,{children:["If ",(0,s.jsx)(d.code,{children:"Largest"}),", it tries to display the size in the largest unit that will have a integral part > 0, else it displays the filesize in the specified unit"]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bIncludeUnitName"})}),(0,s.jsx)(d.td,{children:"Whether or not to include the unit name"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-26",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["An ",(0,s.jsx)(d.code,{children:"FText"})," formatted with your specifications"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-localized-text-from-default-table-by-key",children:"Get Localized Text from Default Table by Key"}),"\n",(0,s.jsxs)(d.p,{children:["Returns the string table ",(0,s.jsx)(d.code,{children:"FText"})," for a given string key"]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUILocalizationLibrary_GetLocalizedTextFromDefaultTableByKey.png",src:i(39200).A+"",width:"342",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FText GetLocalizedTextFromDefaultTableByKey(FString StringKey)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-84",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"StringKey"})}),(0,s.jsx)(d.td,{children:"The key to look up in the table"})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-27",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["Localized Text for the specified key, or ",(0,s.jsx)(d.code,{children:"StringKey"})," if not found"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"reconstruct-error",children:"Reconstruct Error"}),"\n",(0,s.jsx)(d.p,{children:"Helper method to reconstruct a mod.io error passed via code that cannot reference mod.io types"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioErrorCodeLibrary_ReconstructError.png",src:i(23039).A+"",width:"254",height:"116"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioErrorCode ReconstructError(int32 Value, int32 Category)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-85",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Value"})}),(0,s.jsx)(d.td,{children:"The numeric value of the code"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Category"})}),(0,s.jsx)(d.td,{children:"The category ID (populated by native code)"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"iserror",children:"IsError"}),"\n",(0,s.jsx)(d.p,{children:"Checks if an error code contains a error"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioErrorCodeLibrary_IsErrorAsExec.png",src:i(78906).A+"",width:"164",height:"110"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool IsErrorAsExec(FModioErrorCode Error)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-86",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Error"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-28",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"true if the error code is an error"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-value",children:"Get Value"}),"\n",(0,s.jsx)(d.p,{children:"Get underlying error code for an FModioErrorCode."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioErrorCodeLibrary_GetValue.png",src:i(85392).A+"",width:"208",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"int32 GetValue(FModioErrorCode Error)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-87",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Error"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-29",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"The underlying error code. 0 represents no error."}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-message",children:"Get Message"}),"\n",(0,s.jsx)(d.p,{children:"Get the textual representation of the error"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioErrorCodeLibrary_GetMessage.png",src:i(270).A+"",width:"208",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FString GetMessage(FModioErrorCode Error)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-88",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Error"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-30",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["An ",(0,s.jsx)(d.code,{children:"FString"})," message describing the error"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"error-code-matches",children:"Error Code Matches"}),"\n",(0,s.jsx)(d.p,{children:"Checks if the passed-in ErrorCode matches the specified error condition"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioErrorConditionLibrary_ErrorCodeMatches.png",src:i(4457).A+"",width:"379",height:"166"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool ErrorCodeMatches(FModioErrorCode ErrorCode, EModioErrorCondition Condition)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-89",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ErrorCode"})}),(0,s.jsx)(d.td,{children:"The code to check"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Condition"})}),(0,s.jsx)(d.td,{children:"The error condition to check against"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-31",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"True if the code matches the condition"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"list-user-subscription-async",children:"List User Subscription Async"}),"\n",(0,s.jsx)(d.p,{children:"Runs a filter over the user's subscription list"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioExampleLibrary_ListUserSubscriptionAsync.png",src:i(89e3).A+"",width:"249",height:"138"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void ListUserSubscriptionAsync(FModioFilterParams FilterParams, FOnListAllModsDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-90",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FilterParams"})}),(0,s.jsx)(d.td,{children:"The filters to use on the user's subscription list"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Called when mod list has been processed"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-logo-thumbnail-size",children:"Get Logo Thumbnail Size"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioExampleLibrary_GetLogoThumbnailSize.png",src:i(77120).A+"",width:"223",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioLogoSize GetLogoThumbnailSize()\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-logo-full-size",children:"Get Logo Full Size"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioExampleLibrary_GetLogoFullSize.png",src:i(15899).A+"",width:"184",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioLogoSize GetLogoFullSize()\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-avatar-thumbnail-size",children:"Get Avatar Thumbnail Size"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioExampleLibrary_GetAvatarThumbnailSize.png",src:i(58370).A+"",width:"234",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioAvatarSize GetAvatarThumbnailSize()\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"to-filter-params",children:"To Filter Params"}),"\n",(0,s.jsx)(d.p,{children:"Converts a preset filter into a concrete set of filter parameters that can be passed to the mod.io plugin"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioPresetFilterParamsLibrary_ToFilterParams.png",src:i(64454).A+"",width:"216",height:"108"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioFilterParams ToFilterParams(FModioPresetFilterParams Preset)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-91",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Preset"})}),(0,s.jsx)(d.td,{children:"The preset to convert"})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-32",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"The converted filter params"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"load-async",children:"Load Async"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_LoadAsync.png",src:i(60565).A+"",width:"200",height:"138"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void LoadAsync(FModioImageWrapper Image, FOnLoadImageDelegate OnImageLoaded)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-texture",children:"Get Texture"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_GetTexture.png",src:i(92108).A+"",width:"215",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"UTexture2DDynamic* GetTexture(FModioImageWrapper Image)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-state",children:"Get State"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_GetState.png",src:i(46998).A+"",width:"215",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioImageState GetState(FModioImageWrapper Image)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-logo-size",children:"Get Logo Size"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_GetLogoSize.png",src:i(63647).A+"",width:"379",height:"158"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FVector2D GetLogoSize(UTexture* Logo, EModioLogoSize LogoSize)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-92",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Logo"})}),(0,s.jsxs)(d.td,{children:["If null and ",(0,s.jsx)(d.code,{children:"EModioLogoSize::Original"})," is passed, then (0, 0) is returned"]})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"LogoSize"})}),(0,s.jsx)(d.td,{children:"The size of the logo we want to return"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-33",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"Dimensions of the logo if displayed in a 1:1 pixel ratio"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-gallery-size",children:"Get Gallery Size"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_GetGallerySize.png",src:i(24940).A+"",width:"379",height:"158"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FVector2D GetGallerySize(UTexture* GalleryImage, EModioGallerySize GallerySize)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-93",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GalleryImage"})}),(0,s.jsx)(d.td,{children:"If null and EModioGallerySize::Original is passed, then (0, 0) is returned"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GallerySize"})}),(0,s.jsx)(d.td,{children:"The size of the gallery image we want to return"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-34",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"Dimensions of the gallery image if displayed in a 1:1 pixel ratio"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-avatar-size",children:"Get Avatar Size"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioImageLibrary_GetAvatarSize.png",src:i(86557).A+"",width:"379",height:"158"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FVector2D GetAvatarSize(UTexture* Avatar, EModioAvatarSize AvatarSize)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-94",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Avatar"})}),(0,s.jsx)(d.td,{children:"If null and EModioAvatarSize::Original is passed, then (0, 0) is returned"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"AvatarSize"})}),(0,s.jsx)(d.td,{children:"The size of the avatar we want to return"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-35",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"Dimensions of the avatar if displayed in a 1:1 pixel ratio"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-path",children:"Get Path"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioModCollectionLibrary_GetPath.png",src:i(65953).A+"",width:"210",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FString GetPath(FModioModCollectionEntry Entry)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-95",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Entry"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-36",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:["Path to the mod's installation folder on disk. If the mod is not yet installed this path may not yet exist. Check ",(0,s.jsx)(d.code,{children:"GetModState"})," before trying to load files in this location"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-mod-state",children:"Get Mod State"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioModCollectionLibrary_GetModState.png",src:i(56543).A+"",width:"210",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioModState GetModState(FModioModCollectionEntry Entry)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-96",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Entry"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-37",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"EModioModState enum representing current state of the mod"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-mod-profile",children:"Get Mod Profile"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioModCollectionLibrary_GetModProfile.png",src:i(39711).A+"",width:"210",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioModInfo GetModProfile(FModioModCollectionEntry Entry)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-97",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Entry"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-38",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"FModioModInfo containing mod profile data"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-id",children:"Get ID"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioModCollectionLibrary_GetID.png",src:i(52915).A+"",width:"210",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioModID GetID(FModioModCollectionEntry Entry)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-98",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Entry"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-39",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"Mod ID"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-total-progress",children:"Get Total Progress"}),"\n",(0,s.jsx)(d.p,{children:"Retrieves the total amount of progress required for the specified state."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioModProgressInfoLibrary_GetTotalProgress.png",src:i(66964).A+"",width:"379",height:"134"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 GetTotalProgress(FModioModProgressInfo Info, EModioModProgressState State)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-99",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Info"})}),(0,s.jsx)(d.td,{children:"the progress struct to query"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"State"})}),(0,s.jsx)(d.td,{children:"which state to query total progress for"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-40",children:"Returns"}),"\n",(0,s.jsxs)(d.p,{children:[(0,s.jsx)(d.code,{children:"Modio::FileSize"})," for total progress in bytes"]}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-current-state",children:"Get Current State"}),"\n",(0,s.jsx)(d.p,{children:"Returns a EModioModProgressState indicating which state the mod operation is in"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioModProgressInfoLibrary_GetCurrentState.png",src:i(84009).A+"",width:"203",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioModProgressState GetCurrentState(FModioModProgressInfo Info)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-100",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Info"})}),(0,s.jsx)(d.td,{children:"The progress struct to query"})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-current-progress",children:"Get Current Progress"}),"\n",(0,s.jsxs)(d.p,{children:["Retrieves the progress value for the specified state. ",(0,s.jsx)(d.code,{children:"CurrentProgress == TotalProgress"})," for states which have completed, for example if a mod is currently Extracting, then passing in Downloading would give you a value equal to the total download size because the download has completed"]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioModProgressInfoLibrary_GetCurrentProgress.png",src:i(5873).A+"",width:"379",height:"134"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 GetCurrentProgress(FModioModProgressInfo Info, EModioModProgressState State)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-101",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Info"})}),(0,s.jsx)(d.td,{children:"the progress struct to query"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"State"})}),(0,s.jsx)(d.td,{children:"which state to query progress information for"})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-41",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"FModioUnsigned64 containing current progress in bytes"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-tags",children:"Get Tags"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioModTagOptionsLibrary_GetTags.png",src:i(7593).A+"",width:"232",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"TArray GetTags(FModioModTagOptions ModTags)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-102",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModTags"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-42",children:"Returns"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-paged-result",children:"Get Paged Result"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioModTagOptionsLibrary_GetPagedResult.png",src:i(17572).A+"",width:"236",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioPagedResult GetPagedResult(FModioModTagOptions ModTags)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-103",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModTags"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-43",children:"Returns"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-default-portal-for-current-platform",children:"Get Default Portal for Current Platform"}),"\n",(0,s.jsx)(d.p,{children:"Get the default portal for the platform the game is running on."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioPlatformHelpersLibrary_GetDefaultPortalForCurrentPlatform.png",src:i(22178).A+"",width:"307",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioPortal GetDefaultPortalForCurrentPlatform()\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-104",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsx)(d.table,{children:(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})})})}),"\n",(0,s.jsx)(d.h4,{id:"returns-44",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"EModioPortal of the portal to use"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-default-auth-provider-for-current-platform",children:"Get Default Auth Provider for Current Platform"}),"\n",(0,s.jsx)(d.p,{children:"Get the default Authentication Provider for the current platform the game is running on"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioPlatformHelpersLibrary_GetDefaultAuthProviderForCurrentPlatform.png",src:i(2957).A+"",width:"351",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioAuthenticationProvider GetDefaultAuthProviderForCurrentPlatform()\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-105",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsx)(d.table,{children:(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})})})}),"\n",(0,s.jsx)(d.h4,{id:"returns-45",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"EModioAuthenticationProvider to use for authentication calls"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-current-platform",children:"Get Current Platform"}),"\n",(0,s.jsx)(d.p,{children:"Gets the current platform that the game is running on"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioPlatformHelpersLibrary_GetCurrentPlatform.png",src:i(21596).A+"",width:"203",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioPlatformName GetCurrentPlatform()\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-106",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsx)(d.table,{children:(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})})})}),"\n",(0,s.jsx)(d.h4,{id:"returns-46",children:"Returns"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"round-number-string",children:"Round Number String"}),"\n",(0,s.jsx)(d.p,{children:"Sets the correct decimals depending on the file size or speed"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_RoundNumberString.png",src:i(1836).A+"",width:"287",height:"84"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FText RoundNumberString(FText inputText)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-107",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"inputText"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-percent-integer64integer64",children:"Get Percent (integer64/integer64)"}),"\n",(0,s.jsxs)(d.p,{children:["Calculates percentage using two ",(0,s.jsx)(d.code,{children:"int64"})," params"]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_Pct_Int64Int64.png",src:i(84564).A+"",width:"267",height:"92"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"float Pct_Int64Int64(int64 Dividend, int64 Divisor)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-108",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Dividend"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Divisor"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-47",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"The floating point result of Dividend/Divisor with no checks"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"is-valid-security-code-format",children:"Is Valid Security Code Format"}),"\n",(0,s.jsx)(d.p,{children:"Checks if the string has the same format as the mod.io security code"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_IsValidSecurityCodeFormat.png",src:i(16566).A+"",width:"252",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool IsValidSecurityCodeFormat(FString String)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-109",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"String"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-48",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"True if the security code has a valid format"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"is-valid-email-address-format",children:"Is Valid Email Address Format"}),"\n",(0,s.jsx)(d.p,{children:"Does a basic validation if the email address supplied has a valid form"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_IsValidEmailAddressFormat.png",src:i(72003).A+"",width:"253",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool IsValidEmailAddressFormat(FString String)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-110",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"String"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-49",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"True if the email address has a valid format"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-time-span-as-string",children:"Get Time Span as String"}),"\n",(0,s.jsx)(d.p,{children:"Gets the time span between present and specified past date FString"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetTimeSpanAsString.png",src:i(60532).A+"",width:"293",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FString GetTimeSpanAsString(FString PastDateString)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-111",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PastDateString"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-shortened-number-as-string",children:"Get Shortened Number as String"}),"\n",(0,s.jsx)(d.p,{children:"Shortens the specified large number"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetShortenedNumberAsString.png",src:i(58510).A+"",width:"269",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FString GetShortenedNumberAsString(int64 Number)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-112",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Number"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-project-initialize-options-for-session-id",children:"Get Project Initialize Options for Session Id"}),"\n",(0,s.jsx)(d.p,{children:"Get the options needed to initialize the mod.io SDK specified in the project settings"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetProjectInitializeOptionsForSessionId.png",src:i(17753).A+"",width:"330",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioInitializeOptions GetProjectInitializeOptionsForSessionId(FString SessionId)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-113",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SessionId"})}),(0,s.jsx)(d.td,{children:"The LocalSessionIdentifier option to initialize project with"})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-project-game-id",children:"Get Project Game Id"}),"\n",(0,s.jsx)(d.p,{children:"Get the game id specified in the mod.io project settings"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetProjectGameId.png",src:i(98488).A+"",width:"198",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioGameID GetProjectGameId()\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-114",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsx)(d.table,{children:(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})})})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-project-environment",children:"Get Project Environment"}),"\n",(0,s.jsx)(d.p,{children:"Get the environment specified in the mod.io project settings"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetProjectEnvironment.png",src:i(46898).A+"",width:"223",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioEnvironment GetProjectEnvironment()\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-115",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsx)(d.table,{children:(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})})})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-project-api-key",children:"Get Project Api Key"}),"\n",(0,s.jsx)(d.p,{children:"Get the api key specified in the mod.io project settings"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetProjectApiKey.png",src:i(54088).A+"",width:"193",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioApiKey GetProjectApiKey()\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-116",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsx)(d.table,{children:(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})})})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-monetization-purchase-category",children:"Get Monetization Purchase Category"}),"\n",(0,s.jsx)(d.p,{children:"Get the purchase category to pass to the store overlay UI for a given portal."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetMonetizationPurchaseCategory.png",src:i(91574).A+"",width:"379",height:"104"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FString GetMonetizationPurchaseCategory(EModioPortal Portal)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-117",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Portal"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-50",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"string of ID for the purchase category for a given Portal in use, returns empty if the given key was not found/not defined"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-language-code-string",children:"Get Language Code String"}),"\n",(0,s.jsx)(d.p,{children:"Get language code string. This can be used for localization purposes"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetLanguageCodeString.png",src:i(89138).A+"",width:"379",height:"104"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FString GetLanguageCodeString(EModioLanguage Language)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-118",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Language"})}),(0,s.jsx)(d.td,{children:"The language code to convert to string"})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-51",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:'The language code as a string (e.g. "en", "fr", "de")'}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-language-code-from-string",children:"Get Language Code from String"}),"\n",(0,s.jsx)(d.p,{children:"Get language code enum from string in ISO 639-1 format. This can be used for localization purposes"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetLanguageCodeFromString.png",src:i(81254).A+"",width:"291",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"EModioLanguage GetLanguageCodeFromString(FString LanguageCode)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-119",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"LanguageCode"})}),(0,s.jsx)(d.td,{children:'The language code as a string (e.g. "en", "fr", "de")'})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-52",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"The language code as an enum"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-desired-file-size-unit",children:"Get Desired File Size Unit"}),"\n",(0,s.jsx)(d.p,{children:"Get desired file size unit based on the size of the file"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetDesiredFileSizeUnit.png",src:i(60391).A+"",width:"249",height:"81"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"TEnumAsByte GetDesiredFileSizeUnit(int64 FileSize)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-120",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FileSize"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-53",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"the desired file size unit"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-default-session-id-windows",children:"Get Default Session Id Windows"}),"\n",(0,s.jsx)(d.p,{children:"Get Session Id for Windows for initialization of the SDK"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_GetDefaultSessionIdWindows.png",src:i(71175).A+"",width:"266",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FString GetDefaultSessionIdWindows()\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-121",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsx)(d.table,{children:(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})})})}),"\n",(0,s.jsx)(d.h4,{id:"returns-54",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"The windows session id, or an empty string if you are not on Windows"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"tostring-filesize",children:"ToString (Filesize)"}),"\n",(0,s.jsx)(d.p,{children:"Converts a filesize to a human readable string with the appropriate unit"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSDKLibrary_Filesize_ToString.png",src:i(12536).A+"",width:"441",height:"205"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FText Filesize_ToString(int64 FileSize, int32 MinDecimals, int32 MaxDecimals, TEnumAsByte Unit, bool bIncludeUnitName)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-122",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FileSize"})}),(0,s.jsx)(d.td,{children:"Filesize in bytes"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MinDecimals"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MaxDecimals"})}),(0,s.jsx)(d.td,{children:"Maximum amount of decimals to display of the filesize"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Unit"})}),(0,s.jsx)(d.td,{children:"If Largest, then it tries to display the size in the largest unit that will have a integral part > 0, else it displays the filesize in the specified unit"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"bIncludeUnitName"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-55",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"A text formatted from your specifications"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"getdefaultmodinstallationdirectory",children:"GetDefaultModInstallationDirectory"}),"\n",(0,s.jsx)(d.p,{children:"Returns the default mod installation directory for this game and platform, ignoring overrides and without requiring the SDK to be initialized."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubsystem_K2_GetDefaultModInstallationDirectory.png",src:i(92554).A+"",width:"290",height:"108"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FString K2_GetDefaultModInstallationDirectory(FModioGameID GameID)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-123",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GameID"})}),(0,s.jsxs)(d.td,{children:["The ",(0,s.jsx)(d.code,{children:"ModioGameID"})," of the game we're fetching the default mod installation directory for."]})]})})]})}),"\n",(0,s.jsx)(d.h4,{id:"returns-56",children:"Returns"}),"\n",(0,s.jsx)(d.p,{children:"The default mod installation directory for the specified game on the current platform"}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"is-purchasable",children:"Is Purchasable"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioTokenPackLibrary_IsPurchasable.png",src:i(72668).A+"",width:"192",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool IsPurchasable(FModioTokenPack In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-title",children:"Get Title"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioTokenPackLibrary_GetTitle.png",src:i(15032).A+"",width:"192",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FText GetTitle(FModioTokenPack In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-regular-price",children:"Get Regular Price"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioTokenPackLibrary_GetRegularPrice.png",src:i(88371).A+"",width:"192",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FText GetRegularPrice(FModioTokenPack In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-numeric-price",children:"Get Numeric Price"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioTokenPackLibrary_GetNumericPrice.png",src:i(96756).A+"",width:"192",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"int64 GetNumericPrice(FModioTokenPack In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-modio-id",children:"Get Modio Id"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioTokenPackLibrary_GetModioId.png",src:i(83505).A+"",width:"192",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioTokenPackID GetModioId(FModioTokenPack In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-long-description",children:"Get Long Description"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioTokenPackLibrary_GetLongDescription.png",src:i(66182).A+"",width:"203",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FText GetLongDescription(FModioTokenPack In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-id-1",children:"Get Id"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioTokenPackLibrary_GetId.png",src:i(88883).A+"",width:"192",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FString GetId(FModioTokenPack In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-fields",children:"Get Fields"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioTokenPackLibrary_GetFields.png",src:i(74615).A+"",width:"193",height:"78"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"TMap GetFields(FModioTokenPack In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-display-price",children:"Get Display Price"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioTokenPackLibrary_GetDisplayPrice.png",src:i(29301).A+"",width:"192",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FText GetDisplayPrice(FModioTokenPack In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"get-description",children:"Get Description"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioTokenPackLibrary_GetDescription.png",src:i(53312).A+"",width:"192",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FText GetDescription(FModioTokenPack In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64---modiounsigned64",children:"ModioUnsigned64 - ModioUnsigned64"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_Subtract.png",src:i(6119).A+"",width:"139",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 Subtract(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"percentage-unsigned-64",children:"Percentage Unsigned 64"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_Percentage_Unsigned64.png",src:i(47991).A+"",width:"222",height:"106"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"float Percentage_Unsigned64(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64",children:"ModioUnsigned64 != ModioUnsigned64"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_NotEqualTo.png",src:i(60609).A+"",width:"159",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool NotEqualTo(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"make-from-components",children:"Make from Components"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_MakeFromComponents.png",src:i(37173).A+"",width:"220",height:"106"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 MakeFromComponents(int32 High, int32 Low)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-1",children:"ModioUnsigned64 < ModioUnsigned64"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_LessThan.png",src:i(29929).A+"",width:"139",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool LessThan(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64--0",children:"ModioUnsigned64 > 0"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_GreaterThanZero.png",src:i(42506).A+"",width:"179",height:"54"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool GreaterThanZero(FModioUnsigned64 In)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-2",children:"ModioUnsigned64 > ModioUnsigned64"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_GreaterThan.png",src:i(84996).A+"",width:"139",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool GreaterThan(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-3",children:"ModioUnsigned64 == ModioUnsigned64"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_EqualTo.png",src:i(62576).A+"",width:"179",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool EqualTo(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-4",children:"ModioUnsigned64 / ModioUnsigned64"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_DivideToFloat.png",src:i(1381).A+"",width:"139",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"float DivideToFloat(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64--float",children:"ModioUnsigned64 / float"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_DivideFloat.png",src:i(74136).A+"",width:"171",height:"84"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"float DivideFloat(FModioUnsigned64 LHS, float RHS)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-truncate",children:"ModioUnsigned64 / ModioUnsigned64 (truncate)"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_Divide.png",src:i(1512).A+"",width:"139",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 Divide(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"break-to-components",children:"Break to Components"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_BreakToComponents.png",src:i(9105).A+"",width:"206",height:"106"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void BreakToComponents(FModioUnsigned64 In, int32 High, int32 Low)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"modiounsigned64--modiounsigned64-5",children:"ModioUnsigned64 + ModioUnsigned64"}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioUnsigned64Library_Add.png",src:i(99794).A+"",width:"139",height:"76"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"FModioUnsigned64 Add(FModioUnsigned64 LHS, FModioUnsigned64 RHS)\n"})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"submitnewmodfrommemoryasync",children:"SubmitNewModFromMemoryAsync"}),"\n",(0,s.jsx)(d.p,{children:"Submit a new mod, with its logo data coming from an in-memory buffer rather than a file."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync.png",src:i(34022).A+"",width:"287",height:"198"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitNewModFromMemoryAsync(FModioModCreationHandle Handle, FModioCreateModParams Params, TArray PngData, FOnSubmitNewModDelegate Callback)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"parameters-124",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Handle"})}),(0,s.jsx)(d.td,{children:"Mod creation handle"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Params"})}),(0,s.jsx)(d.td,{children:"Parameters to use when creating the mod"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PngData"})}),(0,s.jsx)(d.td,{children:"In-memory buffer, representative of a PNG file to be used for upload"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Callback"})}),(0,s.jsx)(d.td,{children:"Callback once operation has completed"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"submitnewmodfileformodfrommemory",children:"SubmitNewModFileForModFromMemory"}),"\n",(0,s.jsxs)(d.p,{children:["Queues the upload of a new mod file release for the specified mod, using the submitted parameters. This upload method accepts a block of memory ",(0,s.jsx)(d.code,{children:"TArray"})," rather than a file path. The upload's progress can be tracked in the same way as downloads; when completed, a Mod Management Event will be triggered with the result code for the upload."]}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory.png",src:i(32601).A+"",width:"315",height:"192"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"void K2_SubmitNewModFileForModFromMemory(UModioSubsystem* Target, FModioModID Mod, FModioCreateModFileMemoryParams Params)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"requirements-41",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,s.jsx)(d.h4,{id:"parameters-125",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UModioSubsystem*"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Mod"})}),(0,s.jsx)(d.td,{children:"The ID of the mod you are submitting a file for"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Params"})}),(0,s.jsx)(d.td,{children:"Information about the mod file being created, including the memory that wiull be uploaded as a mod"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"loadmodfiletomemory",children:"LoadModFileToMemory"}),"\n",(0,s.jsx)(d.p,{children:"Loads an installed mod file into memory."}),"\n",(0,s.jsx)(d.p,{children:(0,s.jsx)(d.img,{alt:"nd_img_ModioSubmissionExtensionLibrary_K2_LoadModFileToMemory.png",src:i(20595).A+"",width:"318",height:"162"})}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-cpp",children:"bool K2_LoadModFileToMemory(UModioSubsystem* Target, FModioModID ModId, TArray ModData)\n"})}),"\n",(0,s.jsx)(d.h4,{id:"requirements-42",children:"Requirements"}),"\n",(0,s.jsxs)(d.ul,{children:["\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"initialized-sdk"})}),"\n",(0,s.jsx)(d.li,{children:(0,s.jsx)(d.em,{children:"authenticated-user"})}),"\n"]}),"\n",(0,s.jsx)(d.h4,{id:"parameters-126",children:"Parameters"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Target"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UModioSubsystem*"})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModId"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Mod Data"})}),(0,s.jsx)(d.td,{children:"A byte array of the mod that has been loaded"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h2,{id:"enums",children:"Enums"}),"\n",(0,s.jsx)(d.h3,{id:"EModioModfilePlatform",children:"EModioModfilePlatform"}),"\n",(0,s.jsx)(d.p,{children:"Enum representing the platform(s) that a modfile is enabled for"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Windows"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Mac"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Linux"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Android"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"iOS"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"XboxOne"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"XboxSeriesX"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PS4"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PS5"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Switch"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Oculus"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Source"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EGameMaturityFlags",children:"EGameMaturityFlags"}),"\n",(0,s.jsx)(d.p,{children:"Maturity options for a game"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"None"})}),(0,s.jsx)(d.td,{children:"Don't allow mature content in mods (default)"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MatureModsAllowed"})}),(0,s.jsx)(d.td,{children:"This game allows mods containing mature content"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MatureAudiencesOnly"})}),(0,s.jsx)(d.td,{children:"This game is for mature audiences only"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EGameMonetizationFlags",children:"EGameMonetizationFlags"}),"\n",(0,s.jsx)(d.p,{children:"Monetization properties of a game"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"None"})}),(0,s.jsx)(d.td,{children:"None set (default)"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Monetization"})}),(0,s.jsx)(d.td,{children:"Monetization is enabled"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Marketplace"})}),(0,s.jsx)(d.td,{children:"Marketplace is enabled"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PartnerProgram"})}),(0,s.jsx)(d.td,{children:"Partner Program is enabled"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioModServerSideStatus",children:"EModioModServerSideStatus"}),"\n",(0,s.jsx)(d.p,{children:"Enum representing a mod's server side status"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NotAccepted"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Accepted"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Deleted"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioVirusStatus",children:"EModioVirusStatus"}),"\n",(0,s.jsx)(d.p,{children:"If the file has been found to be malicious or not"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NoThreat"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Malicious"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioVirusScanStatus",children:"EModioVirusScanStatus"}),"\n",(0,s.jsx)(d.p,{children:"Current state of the scanned file"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NotScanned"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ScanComplete"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InProgress"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TooLargeToScan"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FileNotFound"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ErrorScanning"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioObjectVisibilityFlags",children:"EModioObjectVisibilityFlags"}),"\n",(0,s.jsx)(d.p,{children:"Enum representing whether or not a mod is visible to users"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Hidden"})}),(0,s.jsx)(d.td,{children:"Mod is concealed from users"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Public"})}),(0,s.jsx)(d.td,{children:"Mod is openly available"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioMaturityFlags",children:"EModioMaturityFlags"}),"\n",(0,s.jsx)(d.p,{children:"Enum representing mature content that a mod may contain"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"None"})}),(0,s.jsx)(d.td,{children:"No maturity"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Alcohol"})}),(0,s.jsx)(d.td,{children:"Content contains alcohol references"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Drugs"})}),(0,s.jsx)(d.td,{children:"Content contains drug references"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Violence"})}),(0,s.jsx)(d.td,{children:"Content contains violence references"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Explicit"})}),(0,s.jsx)(d.td,{children:"Content contains sexual references"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioModManagementEventType",children:"EModioModManagementEventType"}),"\n",(0,s.jsx)(d.p,{children:"What type of event occurred"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Installed"})}),(0,s.jsx)(d.td,{children:"Mod installation to local storage completed"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Uninstalled"})}),(0,s.jsx)(d.td,{children:"Mod uninstallation from local storage completed"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Updated"})}),(0,s.jsx)(d.td,{children:"Mod local installation updated to latest version"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Uploaded"})}),(0,s.jsx)(d.td,{children:"Mod file was uploaded"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"BeginInstall"})}),(0,s.jsx)(d.td,{children:"Mod download and installation has started"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"BeginUninstall"})}),(0,s.jsx)(d.td,{children:"Mod uninstallation has started"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"BeginUpdate"})}),(0,s.jsx)(d.td,{children:"Mod download and update has started"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"BeginUpload"})}),(0,s.jsx)(d.td,{children:"Mod upload has started"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioAuthenticationProvider",children:"EModioAuthenticationProvider"}),"\n",(0,s.jsx)(d.p,{children:"Simple struct to encapsulate data passed to external authentication systems"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"XboxLive"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Steam"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GoG"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Itch"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Switch"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Discord"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PSN"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Epic"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Oculus"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"OpenID"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GoogleIDToken"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GoogleServerSideToken"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioEnvironment",children:"EModioEnvironment"}),"\n",(0,s.jsxs)(d.p,{children:["Enum representing which environment the game is deployed to: ",(0,s.jsx)(d.code,{children:"Test"})," or ",(0,s.jsx)(d.code,{children:"Live"}),"."]}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Test"})}),(0,s.jsx)(d.td,{children:"Test (private) environment"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Live"})}),(0,s.jsx)(d.td,{children:"Live (public) environment"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioPortal",children:"EModioPortal"}),"\n",(0,s.jsx)(d.p,{children:"Enum representing the store or service your game is being distributed through"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"None"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Apple"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EpicGamesStore"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GOG"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Google"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Itchio"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Nintendo"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PSN"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Steam"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"XboxLive"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioPlatformName",children:"EModioPlatformName"}),"\n",(0,s.jsx)(d.p,{children:"Enum representing a named platform that the plugin is running on."}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Windows"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Mac"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Linux"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PS4"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PS5"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"XBoxOne"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"XSX"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Switch"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Unknown"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Android"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"iOS"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioLogoSize",children:"EModioLogoSize"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb320"})}),(0,s.jsx)(d.td,{children:"320x180px"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb640"})}),(0,s.jsx)(d.td,{children:"640x360px"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb1280"})}),(0,s.jsx)(d.td,{children:"1280x720px"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Original"})}),(0,s.jsx)(d.td,{children:"Original Size"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioAvatarSize",children:"EModioAvatarSize"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Original"})}),(0,s.jsx)(d.td,{children:"Original Size"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb50"})}),(0,s.jsx)(d.td,{children:"50x50px Thumbnail"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb100"})}),(0,s.jsx)(d.td,{children:"100x100px Thumbnail"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioGallerySize",children:"EModioGallerySize"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Original"})}),(0,s.jsx)(d.td,{children:"Original Size"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb320"})}),(0,s.jsx)(d.td,{children:"320x180px Thumbnail"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thumb1280"})}),(0,s.jsx)(d.td,{children:"1280x720 Thumbnail"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioLogLevel",children:"EModioLogLevel"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Trace"})}),(0,s.jsx)(d.td,{children:"Detailed low-level debugging output. Not intended for general use"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Detailed"})}),(0,s.jsx)(d.td,{children:"Detailed but not low-level. Generally useful for some mid-level information for debugging."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Info"})}),(0,s.jsx)(d.td,{children:"Informational output containing status messages"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Warning"})}),(0,s.jsx)(d.td,{children:"Warnings about incorrect plugin usage, timeouts"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Error"})}),(0,s.jsx)(d.td,{children:"Only errors"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioLanguage",children:"EModioLanguage"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"English"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Bulgarian"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"French"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"German"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Italian"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Polish"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Portuguese"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Hungarian"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Japanese"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Korean"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Russian"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Spanish"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Thai"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ChineseSimplified"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ChineseTraditional"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Turkish"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Ukrainian"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Arabic"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioModChangeType",children:"EModioModChangeType"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Added"})}),(0,s.jsx)(d.td,{children:"The user's list has a new mod to synchronize"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Removed"})}),(0,s.jsx)(d.td,{children:"The user's list must remove a mod to synchronize"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Updated"})}),(0,s.jsx)(d.td,{children:"The user's list must update a mod to synchronize"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EFileSizeUnit",children:"EFileSizeUnit"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Largest"})}),(0,s.jsx)(d.td,{children:"Will take the largest one that becomes a number larger than 1 (i.e, 1300mb becomes 1.3gb)"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"B"})}),(0,s.jsx)(d.td,{children:"A single byte"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"KB"})}),(0,s.jsx)(d.td,{children:"Kilobytes"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MB"})}),(0,s.jsx)(d.td,{children:"Megabytes"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"GB"})}),(0,s.jsx)(d.td,{children:"Gigabytes"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioEntitlementConsumptionState",children:"EModioEntitlementConsumptionState"}),"\n",(0,s.jsx)(d.p,{children:"State of an entitlement consumption transaction"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Failed"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Pending"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Fulfilled"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ConsumeLimitExceeded"})}),(0,s.jsx)(d.td,{})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioEntitlementType",children:"EModioEntitlementType"}),"\n",(0,s.jsx)(d.p,{children:"Type of entitlement that was consumed"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsx)(d.tbody,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"VirtualCurrency"})}),(0,s.jsx)(d.td,{})]})})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioErrorCondition",children:"EModioErrorCondition"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NoError"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NetworkError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code represents a connection or HTTP error between the client and the mod.io server."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ConfigurationError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates the SDK's configuration is not valid - the game ID or API key are incorrect or the game has been deleted."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InvalidArgsError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates the arguments passed to the function have failed validation or were otherwise invalid."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FilesystemError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates a permission or IO error when accessing local filesystem data."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InternalError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code represents an internal SDK error - please inform mod.io of the error code value."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ApiErrorRefSuccess"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error ref returned by the API indicates an implicit success because the operation has already been performed (ie a no-op is success)."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EntityNotFoundError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that a specified game, mod, user, media file or mod file was not found."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserTermsOfUseError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that the user has not yet accepted the mod.io Terms of Use."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SubmitReportError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that a report for the specified content could not be submitted."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserNotAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that a user is not authenticated."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKNotInitialized"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that the SDK has not been initialized."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UserAlreadyAuthenticatedError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that the user is already authenticated."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SystemError"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that a low-level system error occurred outside of mod.io SDK control."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"OperationCanceled"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that the asynchronous operation was cancelled before it completed."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModManagementDisabled"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that Mod Management has not been enabled."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RateLimited"})}),(0,s.jsx)(d.td,{children:"Too many requests made to the mod.io API within the rate-limiting window. Please wait and try again."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModBeingProcessed"})}),(0,s.jsx)(d.td,{children:"The specified mod's files are currently being updated by the SDK. Please try again later."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InsufficientSpace"})}),(0,s.jsx)(d.td,{children:"There is insufficient space to install the mod. Please free up space and try again."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SDKAlreadyInitialized"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that the SDK has already been initialized."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ModManagementAlreadyEnabled"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that Mod Management has already been enabled."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InsufficientPermissions"})}),(0,s.jsx)(d.td,{children:"When this condition is true, the error code indicates that the current user does not have the required permissions for this operation."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EmailLoginCodeInvalid"})}),(0,s.jsx)(d.td,{children:"The email login code is incorrect, has expired, or has already been used."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"AlreadySubscribed"})}),(0,s.jsx)(d.td,{children:"The specified mod is already subscribed to."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InstallOrUpdateCancelled"})}),(0,s.jsx)(d.td,{children:"The current mod installation or update was cancelled."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UploadCancelled"})}),(0,s.jsx)(d.td,{children:"The current modfile upload was cancelled."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"TempModSetNotInitialized"})}),(0,s.jsx)(d.td,{children:"TempModSet need to be initialized first, call InitTempModSet."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MonetizationOperationError"})}),(0,s.jsx)(d.td,{children:"An error occurred while performing a monetization operation."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PaymentTransactionFailed"})}),(0,s.jsx)(d.td,{children:"The transaction requires a payment but it could not be fulfilled. Please retry with funds on the wallet"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"IncorrectPrice"})}),(0,s.jsx)(d.td,{children:"The display price for the mod is out-of-date or incorrect. Please retry with the correct display price."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ItemAlreadyOwned"})}),(0,s.jsx)(d.td,{children:"The authenticated user already has acquired this item"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ParentalControlRestrictions"})}),(0,s.jsx)(d.td,{children:"Parental control restrictions prevent this account from accessing UGC."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MetricsSessionNotInitialized"})}),(0,s.jsx)(d.td,{children:"Metrics session has not yet been initialized. Ensure that you have a metrics secret key set for your project."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MetricsSessionAlreadyInitialized"})}),(0,s.jsx)(d.td,{children:"Metrics session has already been been initialized."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MetricsSessionIsActive"})}),(0,s.jsx)(d.td,{children:"Metrics session has been started."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MetricsSessionIsNotActive"})}),(0,s.jsx)(d.td,{children:"Metrics session has not been started. Please call MetricsSessionStartAsync."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"MetricsSessionHasNoMods"})}),(0,s.jsx)(d.td,{children:"No mods have been added to the session."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"PremiumFeatureNotAvailable"})}),(0,s.jsx)(d.td,{children:"This premium feature is not available for your project."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"EmailExchangeCodeAlreadyRedeemed"})}),(0,s.jsx)(d.td,{children:"The email security code has already been redeemed."})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioSortFieldType",children:"EModioSortFieldType"}),"\n",(0,s.jsx)(d.p,{children:"Enum indicating which field should be used to sort the results"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"ID"})}),(0,s.jsx)(d.td,{children:"Use mod ID (default)"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DownloadsToday"})}),(0,s.jsx)(d.td,{children:'Use number of downloads in last 24 (exposed in REST API as "popular")'})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"SubscriberCount"})}),(0,s.jsx)(d.td,{children:"Use number of subscribers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Rating"})}),(0,s.jsx)(d.td,{children:"Use mod rating"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DateMarkedLive"})}),(0,s.jsx)(d.td,{children:"Use date mod was marked live"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DateUpdated"})}),(0,s.jsx)(d.td,{children:"Use date mod was last updated"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DownloadsTotal"})}),(0,s.jsx)(d.td,{children:"Use downloads total"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Alphabetical"})}),(0,s.jsx)(d.td,{children:"Use mod name"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioSortDirection",children:"EModioSortDirection"}),"\n",(0,s.jsx)(d.p,{children:"Enum indicating which direction sorting should be applied"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Ascending"})}),(0,s.jsx)(d.td,{})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Descending"})}),(0,s.jsx)(d.td,{children:"(default)"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioRevenueFilterType",children:"EModioRevenueFilterType"}),"\n",(0,s.jsx)(d.p,{children:"Enum indicating filtering options based off revenue type"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Free"})}),(0,s.jsx)(d.td,{children:"Return only free mods"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Paid"})}),(0,s.jsx)(d.td,{children:"Return only paid mods"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FreeAndPaid"})}),(0,s.jsx)(d.td,{children:"Return both free and paid mods"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioImageState",children:"EModioImageState"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"OnDisc"})}),(0,s.jsx)(d.td,{children:"Image data is located on hard drive"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"LoadingIntoMemory"})}),(0,s.jsx)(d.td,{children:"Image data is transferring to a memory location"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InMemory"})}),(0,s.jsx)(d.td,{children:"Image data is located in memory"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Corrupted"})}),(0,s.jsx)(d.td,{children:"Image data is not readable"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioModState",children:"EModioModState"}),"\n",(0,s.jsx)(d.p,{children:"Enum representing the current state of a mod"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"InstallationPending"})}),(0,s.jsx)(d.td,{children:"The mod is pending installation. This state is not saved."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Installed"})}),(0,s.jsx)(d.td,{children:"The mod is installed."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UpdatePending"})}),(0,s.jsx)(d.td,{children:"The mod is pending an update. This state is saved as installed."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Downloading"})}),(0,s.jsx)(d.td,{children:"The mod is downloading as part of the installation process. This state is not saved."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Extracting"})}),(0,s.jsx)(d.td,{children:"The mod is extracting as part of the installation process. This state is not saved."})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"UninstallPending"})}),(0,s.jsx)(d.td,{children:"The mod is pending uninstallation. This state is saved as installed."})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioModProgressState",children:"EModioModProgressState"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Initializing"})}),(0,s.jsx)(d.td,{children:"Download information is being retrieved from mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Downloading"})}),(0,s.jsx)(d.td,{children:"Mod archive is downloading from mod.io servers"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Extracting"})}),(0,s.jsx)(d.td,{children:"Mod archive is downloaded and now extracting"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Compressing"})}),(0,s.jsx)(d.td,{children:"Mod archive is being compressed from files on disk"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Uploading"})}),(0,s.jsx)(d.td,{children:"Mod archive is uploading to mod.io servers"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioOpenStoreResult",children:"EModioOpenStoreResult"}),"\n",(0,s.jsx)(d.p,{children:"Enumerator of potential results on attempting to open a native platform store"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Success"})}),(0,s.jsx)(d.td,{children:"Store opened successfully *"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FailedInactive"})}),(0,s.jsx)(d.td,{children:"Monetization not active *"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FailedUnsupportedPlatform"})}),(0,s.jsx)(d.td,{children:"The current platform does not support a native store *"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FailedUnknown"})}),(0,s.jsx)(d.td,{children:"Failed to open for an unknown reason *"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioRating",children:"EModioRating"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Neutral"})}),(0,s.jsx)(d.td,{children:"A neutral rating"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Positive"})}),(0,s.jsx)(d.td,{children:"A positive rating"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Negative"})}),(0,s.jsx)(d.td,{children:"A negative rating"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{}),"\n",(0,s.jsx)(d.h3,{id:"EModioReportType",children:"EModioReportType"}),"\n",(0,s.jsx)(n,{colWidths:["30%","70%"],stripes:"odd",children:(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{}),(0,s.jsx)(d.th,{})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Generic"})}),(0,s.jsx)(d.td,{children:"A generic mod report"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"DMCA"})}),(0,s.jsx)(d.td,{children:"Digital Millennium Copyright Act mod report"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"NotWorking"})}),(0,s.jsx)(d.td,{children:"Not working mod report"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"RudeContent"})}),(0,s.jsx)(d.td,{children:"Rude content mod report"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"IllegalContent"})}),(0,s.jsx)(d.td,{children:"Illegal content mod report"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"StolenContent"})}),(0,s.jsx)(d.td,{children:"Stolen content mod report"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"FalseInformation"})}),(0,s.jsx)(d.td,{children:"False information mod report"})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:(0,s.jsx)(d.code,{children:"Other"})}),(0,s.jsx)(d.td,{children:"Other type of mod report"})]})]})]})}),"\n",(0,s.jsx)(d.hr,{})]})}function a(e={}){const{wrapper:d}={...(0,r.R)(),...e.components};return d?(0,s.jsx)(d,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},73149:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},59892:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},89887:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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0COxD+j72H7x3m75Olscd8QO0MOx97kc9XLFC0neKh1HtcVZunTFFVfQrFmzqEePHtS5c2dTHQowf/58+sMf/sBKhsnE5CLBK8AzQzErSmeccQY999xzdN1119HGjd77scPCMSjVY489Zkg9+uij9Oabb6Zj/V+y/I477mAjCu+LTbyf//znPA54QnjKa6+9lj+FhYW0dq18C+nxSlgz5+XlhZLD5b+6detyOI5I4o033jD1YBywubZr1y7m6Xe/+12V9ymqMr5kltjcLNsq+q/o+UYiv0y8SRX1BLCREjm9RFieueVoxkxGv2QhzaLVtDMm32wZTLtEPspRb2+siPomCujlkv8QgUrlLEHJnn76ad4k0aGYpo0NnuXLl7N1njNnDj3//PORdAyXpBBWPvDAA2zldaooHMNabtSoUabeRRddxOvPmpgQJmONijX0448/Tueffz4PE8YTwEGUoz+33357igiwnsariREeH88E0GN3HIYe9wroMBx9gMfrr7+eBg4cyMb87rvvDu26Mt6ijg+EY+W7xHogX5xVNEbxZDZRzvVi0lDFS1dQVsnC4ykSH63jK22LdMdkc1pMm4V/lp46mMQTyWmRKEe9PSTfVvnjxFl0TfnACgcL64w12OTJk3mjBJY6mF599VUqKiqi3//+97z5EbZpEmyDTR6sqbGms1NF4Rj6xw0nWBfCU+Xn59OkSZMyNkknC+E9e/ZwaIs0Y8YM3sC6+uqr2XNjiQQgIQEwWHcD0LhMhvd2X3jhhRy233zzzcdtOADzjTfeyJe5sNGmE/gpKSnhm3vgeRFRhKXKeKtsfEFasfItRLmF4lmU9UL7ScbEfk1uJwHsLVwHoM499HdRV270ZSJlDNibYjupDxVU6IHhmftQB0K9euKSANLE+GJ6PWtuheO88soreR1VUFDAaz7ssFa0dsKGCTbNWrdunVZu8DhQjFdeecUXslUUjsFwYINo5MiR/Pnss898O79pO6xChbTPnK4CrWOtiiUKlj8IgQFWGNZx48bxDThYxuCNpUgvvfQSXXPNNfTII48wwH7xi19wlIU5swF4rPx88cUXvDFme2vQRNSF5drq1as5RJ89ezZfsgumynirbHxBOvFiYVSyGlOy7ggBXOx4a1jhOfwNOB/lqBcvFy99zDCowV+kN4FU5RqjHjQuaWH3e1zsRfo25l3u0OWnic2yvyZvFL76KH2atYrGlvejn+Y+SSUkX2gfTOABioFLJ5gQJOzUQmGwM4s19pIlS4xyYW2GUBGXZ3Cs6G4jrL1RBwoCZUAkoO8Sw6bQgw8+aHZsbZ6g1Lfddht7J4ThuHkjLD377LN0yy23VFuHEQ18/PHHZr+g2oRcw4xKoDRvqEAYKosAAANGSURBVLikdRbvflOJeKKvWFNzeC48OUAdK15MOcXH5xo7jH26N4FkzGN/GF9C7agJ3Zu8hFolG4ntMdkVPDW+/yp5KZej3rL415WCGu0Q5iEMPPfcc/kcH1zOCK6z4dVx6QVluCa6adOmSBOKS2HYDQcINc3KwrGPPvqIwQY+3n///Uh9uEo1VwIAbfwI9meKKVl7ECUa3c5HfI8fnnbcQB1Vghm7V/yd7AXUvrQZXZY8hx5P3kCzk2tpiVhTnynC70HUlUE9IfYloV6UBNDBM+oX2aMN1rVPPfUUA0yHrAMGDOBNHqy7sIGCSx9RE26SuOmmmwheds2aNRw2wjNjBxy3hSIU1d4c11Lx4wzsFCMicMlJILt0KRE+J0HKWCiux4br1Likhd1vbJRhTT0/toE9dVRQR5FTMBSP0uZY62CzDbvGzzzzTIWkXCh+rFJ27YMSiBKKZ8xja2YA3ncomlf+V5lC7PZiRxy75mGXeP5VxuH4rLkSyNgau+aKjPgaNtbYuG0Sl1QqS7jeeqxJ3/98rHRc+1NHAjUG2LjDSF9uyfT0vffee/yDEtz6mC5hFx+XhKqbcAOGW8NXV3qnbruMh+KnrmjlyHEHHHbOsdau6s8v4anxMADcEumSk0BVJJDxzbOqMOPqOgk4CaSXQJTNsxoTiqcXh6vhJHDqSMAB+9SZazfSU0gCDtin0GS7oZ46EkgL7OrcJ37qiM+N1Engh5dAlJ/ApgU2fkyRrPAH5D/8oFyPTgKnsgSARfz8NV1KC2z8RM/hOp0YXbmTwA8kAfEwFsZkmpQW2HiKCMJx57XTidKVOwlkVgLAILAITKZLaYENAnhaSEz8c+BOJ05X7iSQGQkwqMU/YDFKinTnmXb9uC+afx4pHuGETlxyEnASyKwE2JkCcsJTA9RRwnBwFAnYqAiC+OCJIfgt8tGjR/m3zm7XPLMT66ifmhKAAwW28NAQ4C5K+G1LKjKwdSN0UNVOTs2pcaN2EjhxEoi0xj5x7LmenQScBKojAQfs6kjNtXESOMkl4IB9kk+QY89JoDoScMCujtRcGyeBk1wCDtgn+QQ59pwEqiMBB+zqSM21cRI4ySXggH2ST5Bjz0mgOhL4f5bo2rwINWmAAAAAAElFTkSuQmCC"},36342:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCommonTypesLibrary_MakeAuthParams-9889ff972f1927cd2d65350a785da1b8.png"},21735:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCommonTypesLibrary_MakeEntitlementParams-ca9ee94871d4bcb815ae1afeadb102d4.png"},94923:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},1237:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},50900:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions-76f5950618826972f9a40bde21e49d4d.png"},80709:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},42690:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},16659:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},92422:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetBackgroundThread-e499bbf6ceac1c576056f97dbfce48d3.png"},38945:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetExtendedInitializationParameters-b675994c5f5117d737da5f13331ec33b.png"},80201:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetGameEnvironment-9bf28c658ca9a8175e27f7f1e2e6ce09.png"},45671:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetGameId-733baa40804b516d3926e06d2e5ffed7.png"},21880:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetPortal-f95434662488c3c1596eda6b76b8d3de.png"},9731:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},73569:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier-48bd0814f5db0ec0f8a97d2560a396f7.png"},62283:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},21900:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},58589:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},40594:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCreateModLibrary_SetInitialVisibility-ea630d72471876be3f92ec2a7f62411e.png"},65268:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCreateModLibrary_SetInitialVisibility_DEPRECATED-f8acc13f3be4d819e740b51766dd4ed7.png"},74678:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCreateModLibrary_SetMarkAsActiveRelease-d40c905fb2ac942db96dcf0e0982b680.png"},10318:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},32566:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob-935a953f1fa434ce4627432800c74b48.png"},94646:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},40007:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},71105:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},270:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},85392:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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0ksv5f3EW2+9xRvbp556CqZMmcLKapK/bU5a0AGVf/zxR6jHRwFv3ryZN95PPPEEUyWXicBFjw6++uqrYc+ePTB9+vTj6lGOkdyy119/nUFEICGrlCq988477MZRmjFjBvP4ww/qhWW0Zxs7diwsWrQIaJEiK4nPGcyJt5zGh3seWLMXQrXqccr+xPlYTnsjqG+GxNgyiD96qX1JWE6MZVm50+DJAYPYz8iG/3fYhjPMj+3iwAIggHhC8sejOzcZIi3pN8W08m7atCnL4alqZLV2795t25AS0BNXadWUbk9ORDu48n333cfgIKv65JNPwt133w3PP/8880gr/6233mp7zHX8mVilPU1hYWHKahQooNe9kxtHlvG999S7migRCJ955hm48847eV+Un58Pq1Zl9/ZAQyOX8VHAAH6qwUdDp9Epev7GT/iytMFTcJvQrHTqQlygZ1VBeMFPmcRwXOWdBiCKtgFaFYjST8FTvTcCN6ZYzvVCavLC0XUIHvXirI5Me/futXseoktuA7k0lE8r56mQyP00wMDHLcOsWbMYQASqAwcOsOvUVqL9DikwuVXmzRYdMS4CBkXjbrjhBrj22mvhssvQLdKJLPvtt98OF154IfN+xx13OEA39driLdvxMWAp2jYGrQvte1KBiB5hPBrLqV4PtR0If4sR30X4woBOSp3mwlGoGgpG4vMveqZkPRHC14UUjOKQNtUh8BQ0/BHrqs1pRyaKGFGE65ZbbuE9xKOPPspuyM8/k4U89dKhQ4cssBcvXswb+Xnz5rElog05KSwlUkzaFxFwyMKSm0oKTu7eXXfd1WEDoz0PgYMWHAo4mET80GWFgwcPsqWUVlJ23hZvbY0vaQAYqoazyiFRqt486E+cPwGDQ1gvUVrE4Ik8iaF2epNIJ6VOAxBd54FIX0iUXI4AoQib6YqeLdeb86mc6oXju7MGD13zILfLfC666KKMoqFrK+R+3HvvvRx9okADXcc4VdO2bdugqqqKXScCBfF+//33w759++C1117jN1FQeuONN3hRePbZZ1mR77nnHg6U0D5KKnp7x/ndd99xgMAEDww92vssXbqUgzLk2lGUkxYqf2qLt7bG56dD13lgYE8I/W4SJCjChk+I4kRPisJzyudyrBfacrDTwUNdZ/Vw+VyuHchBRwsvwVD1ORxtgxZ8LyjueditQ8tE4Ak1r4T85pNzPaG9ShW0PzkSiN8wARIXj+BoG6zdB4nNuCeqKmPLxOBZvA0i76/pEOboUViZHi7fqQCiUcTy8U6Ego65E6FDpBIQ6fISiE/H60EXdP6dCNkAqNOCCGaW8qJ4uw59ghRIoIMkEFmyA4A+p0DqtD3QKTC2gIVAAp0ugQBAnS7ioIPuLIEAQN15doOxdboEAgB1uoiDDrqzBDIC6HhD2N1ZaMHY/n9IgO7qyJQy1qB7pORrLjIRDMoDCXQHCZDO0x0dmVJGANHV8ODh8pnEGJR3Owng/aqs+xlSRgDRjZfkxgVWKJMog/LuIgHzhj7S/UwpI4CIAN0drF7tl+6nCZm6CcoDCXQNCagXb4ZY57NJWd2JYEwZ3XXLr8qj1/ylfcNzNt0GdQIJnFoSsO+ARW+LwJON+0YjyApAVJEI0oduoaef+jY1NfHvToIo3amlCAE3uUmA39WLoKGfuZB+Z+O2yR6yBpBpRB3k2kluQwpqBxLoOhLIag/UdYYTcBpI4MRKIADQiZV30Fs3k0AAoG42ocFwTqwEAgCdWHkHvXUzCQQA6mYTGgznxEogANCJlXfQWzeTQACgbjahwXBOrAT+DxTLknkwKTiHAAAAAElFTkSuQmCC"},78906:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},23039:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioErrorCodeLibrary_ReconstructError-fd34e6c485430ac5359952f8ad438ffb.png"},4457:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioErrorConditionLibrary_ErrorCodeMatches-0577e7c35976e2a2d2733042ba1b514d.png"},58370:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},15899:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},77120:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},89e3:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync-695ef7f0e8b10ac403d0fd21329dfcf0.png"},86557:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioImageLibrary_GetAvatarSize-082b1eeffcd2b743f94a66210f340b0b.png"},24940:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioImageLibrary_GetGallerySize-9626c66c39dbc11535dffd35e279ef87.png"},63647:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioImageLibrary_GetLogoSize-e5d6147cf8343e10fa23bdb08d0b646a.png"},46998:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},92108:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},60565:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},52915:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},39711:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},56543:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},65953:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},5873:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioModProgressInfoLibrary_GetCurrentProgress-cf02a1331822e1a6d164eb0af3fe972f.png"},84009:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},66964:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioModProgressInfoLibrary_GetTotalProgress-bf65b6793b2e6f41218751755daf9136.png"},17572:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},7593:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},21596:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},2957:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioPlatformHelpersLibrary_GetDefaultAuthProviderForCurrentPlatform-8684a5c74a56ec16d57182102488818f.png"},22178:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioPlatformHelpersLibrary_GetDefaultPortalForCurrentPlatform-2f5206eeda17f3ae9b21f090893f58e9.png"},64454:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},12536:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},71175:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},60391:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},81254:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSDKLibrary_GetLanguageCodeFromString-07f6fa34ac42129bacc95488775b986f.png"},89138:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSDKLibrary_GetLanguageCodeString-47da87bf1ca6d0b3444e4ea1eaac742e.png"},91574:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSDKLibrary_GetMonetizationPurchaseCategory-51bd9f941653bd18b5e75f34e6c26c39.png"},54088:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},46898:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},98488:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},17753:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSDKLibrary_GetProjectInitializeOptionsForSessionId-794e92929faeee6a2fb661456d91d1d7.png"},58510:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSDKLibrary_GetShortenedNumberAsString-4d9bf0258754df026d7a2082964ffba4.png"},60532:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSDKLibrary_GetTimeSpanAsString-b09ea2de257e9f6134e49e2bae984be6.png"},72003:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},16566:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSDKLibrary_IsValidSecurityCodeFormat-f2b25b06b6647d66e1e55a880bf08f59.png"},84564:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},1836:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},20595:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_LoadModFileToMemory-880f5d8c1ba728bf068807cb3559919b.png"},79873:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitModChangesFromMemoryAsync-4edd860ab7540b93959c8c0f7f2a5137.png"},32601:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory-43d8d48bf01808ca9f889c44c78586e4.png"},34022:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync-31680cc49f35d2f21d91b6d2fbb9c98d.png"},23297:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_DisableModManagement-5f0eb0a41951b35be46cb68387079953.png"},18781:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_GetLastValidationError-248302bd685ccf133c8b35edafba9bb3.png"},24896:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_IsModManagementBusy-124248b31972e2a2a47932b93466cdda.png"},62286:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_IsUsingBackgroundThread-09942c052a7a41c9f8586bc302807014.png"},60006:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_AddToTempModSet-bdc1c1978e245ba3122b0de58c45c5d0.png"},6312:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_ArchiveModAsync-301820098783a60cf0bb90984e24ea48.png"},29010:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_AuthenticateUserEmailAsync-d8860759b43511919fe6a4dd23b4d16b.png"},92223:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_AuthenticateUserExternalAsync-20730b90c571ce00ba33752eab60040b.png"},36106:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_ClearUserDataAsync-c2ead944b1bcdee2aa8612351796be8d.png"},69252:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_CloseTempModSet-cd8ef129b913668bdc811207a7c16224.png"},69724:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_EnableModManagement-9fdcb415f8dac2cadba8b3ef4619e8ea.png"},86649:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync-83a8301ecba540f8a8592822d3184974.png"},5859:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync-d188629fa0a5c265b944f648d53b6440.png"},2053:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_ForceUninstallModAsync-f67b8d699d627e8c5788ca293d0194fd.png"},92554:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetDefaultModInstallationDirectory-358e4440ead73240cbcc7e1351ddd81a.png"},85314:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetGameInfoAsync-c33df4da02b4806e818624cea3158637.png"},82892:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetLanguage-825d1af09bb500dac57886a5a78ca64a.png"},56025:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetModCreationHandle-556d4efd18f7c7c76c23437062cac4d2.png"},74955:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetModDependenciesAsync-bb9a17927f1c969c6787d4dd9d42c76e.png"},7434:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetModInfoAsync-c141dbb87248abd169f33ef254251c9f.png"},60973:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetModMediaAvatarAsync-1fdb3c58a27f52670c442f3aa1bbf016.png"},34351:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync-be9588fa4dfac1ac91a102ce0ebd6671.png"},90655:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetModMediaLogoAsync-0a0a1ed024a69d97fcc0a10bdae9b811.png"},74220:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetModTagOptionsAsync-ed35670d985059ef2f2775e597d94fe9.png"},47193:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetMutedUsersAsync-b889b19125d0360cf4d520ade2ab18c5.png"},65789:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetTermsOfUseAsync-c6e22c2b2868122144640004d2394b3b.png"},40348:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetUserDelegationTokenAsync-80a54ec053e5b99bafc5bf071b5fbc97.png"},96438:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetUserMediaAvatarAsync-2a773ca98cccb4b7e926aaf48bc7ff7e.png"},21964:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync-5fe3ab434879bb8d9a79b0ee50739d4c.png"},25684:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_InitTempModSet-34fdcb787f07da43afb64dd9d76ea4d1.png"},49280:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_InitializeAsync-11220774e42901b7ce5d83720c58c28d.png"},85890:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_ListAllModsAsync-1ad7bc96d31f8ae60bfae27078fc2b9f.png"},22028:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_ListUserCreatedModsAsync-ff9ef2ec2b8111cc4674281c005b4d0e.png"},6938:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_ListUserGamesAsync-3914aa13ec1f36ad56d3058600385d7d.png"},92124:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_MetricsSessionEndAsync-830d93bd55175fb12d6ada839686ad5d.png"},14811:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync-554e56025bd496213a76378b849c929b.png"},44014:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatOnceAsync-5bfbdb4e8f6cb7d8572b81c5dccc84dc.png"},10293:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_MetricsSessionStartAsync-651730c41eec661e03832ebfea99162f.png"},96252:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_MuteUserAsync-95092e29e2790d8e96bc2cdc90d1ffb1.png"},99101:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_PreviewExternalUpdatesAsync-2855ce40346338726cdf2fc3f6d4c10a.png"},68537:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_PurchaseModAsync-d05b70f5ff78fce8ad562c2c6597af48.png"},72340:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_QueryCurrentModUpdate-ca721cd3920c490f3d8f27a0e87a9721.png"},55060:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_QueryTempModSet-b0ede8242625cb572430cc348883f3c0.png"},56696:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_QueryUserProfile-290a47c2579a6de4b0e8b4c843dad5cf.png"},83788:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_RefreshUserEntitlementsAsync-0c70260b80c34c71c10bf74061fb4ea2.png"},89494:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_RemoveFromTempModSet-6a7cd2b22c7cb4bd05c036821655d49a.png"},57479:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_ReportContentAsync-eb434d3157fb7884dc999828eb2d6a6e.png"},67942:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_RequestEmailAuthCodeAsync-72567693be0c3a74f8829f100dd7b9d5.png"},53784:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_SetLanguage-64c43dcff334858421a96bdf06ba16f9.png"},68768:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_ShutdownAsync-ad359e71788c08397a38cf61bcb0be00.png"},83175:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_SubmitModChangesAsync-4ad4759be516c2f3d9b45e350c3eaab7.png"},87149:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_SubmitModRatingAsync-a0e171b1e0c563c3cfdf3ad28389564b.png"},93124:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_SubmitNewModAsync-95991a02d50891bf9f8e62f8aa9c4161.png"},64303:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_SubmitNewModFileForMod-24f84c6a68b38837f8b0dfd6bf081b98.png"},72021:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_SubscribeToModAsync-93fd3340617ee4d44dea7078fb1199d4.png"},60291:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_UnmuteUserAsync-3d5fb9c4326a9e0083404c7122e2a1c8.png"},28297:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync-ffcaaed44b92c819c915849b1931814a.png"},93680:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_K2_VerifyUserAuthenticationAsync-5a26791679686730e9dcc7880e18c978.png"},71552:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_KillBackgroundThread-7568cfd2a189b287b269ceec5db5d079.png"},16501:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_PrioritizeTransferForMod-1eb6142c4dd34c75b675bb6246a0d6d8.png"},31214:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_QuerySystemInstallations-dff87f3a0a9c23416e81db47ca0f25da.png"},94564:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_QueryUserInstallations-ad0e0b0aa88244144d9da4210ee3d5d1.png"},703:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_QueryUserPurchasedMods-066afb38d53390a7926561bafc794593.png"},26349:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_QueryUserSubscriptions-73885d17f3df616346f77111ae8b8ad1.png"},63183:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_RunPendingHandlers-50f98a4a74afd398ef05e160d7717e88.png"},28862:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioSubsystem_SetLogLevel-183d6fd9ceeb266aefcf08587b244729.png"},53312:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},29301:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},74615:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},88883:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},66182:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},83505:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},96756:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},88371:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},15032:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},72668:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},42575:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioUIEnumLocalizationLibrary_FileSizeUnsigned64_ToText-4b00fdbdb167e45ea0acaffd8e54b333.png"},89670:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioUIEnumLocalizationLibrary_GetLocalizedTextForEnumByName-5849fa04c36e80e669f1faae64312cb1.png"},39200:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioUILocalizationLibrary_GetLocalizedTextFromDefaultTableByKey-f07c4cb6bbe86f7285e78f7564f65111.png"},99794:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},9105:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},1512:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},74136:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},1381:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},62576:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},84996:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},42506:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},29929:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},37173:(e,d,i)=>{i.d(d,{A:()=>s});const s=i.p+"assets/images/nd_img_ModioUnsigned64Library_MakeFromComponents-5bd42089022b89256170fe2c464b932d.png"},60609:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},47991:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAABqCAYAAADTPO/UAAAgAElEQVR4Xu1dd3SU15W/M6OGGggJkOiI3nuVaaY5xgYbm5h4XeKNvdm1c5LsP9nNOUlOTs7mpG7inGziTXKOk3h3HXdjm2BjG2N6MwILEIjeTDFNHTQaSXvvfeV736cZzUhorMJ74mO+8sp9v3d/7973vpn3fMOGDWsAGywCFoEvFAH/F1qaLcwiYBFgBCzxrCJYBNoAAUu8NgDdFmkRsMSzOmARaAMELPHaAHRbpEXAEs/qgEWgDRCwxGsD0G2RFoGE5kDQ0NAAlZWVfASDQaBrn8/XnCxsXItAp0BA6X5SUhKkp6fz0RwuxEy8iooKuH79ungHEfBDYlIi+PDPBovA7YpAAzRAXX0d84KOrKwsyMjIiAmOmIhHFo4y9vv9EEjwQ15BL8idkgMZfdMgkBIA5l+U779EfIxWU2cQj+/QsEWWGTfHOreyXJxdK4fmVCdi0ZRJOOF0/QV6JoykcDp466Wa0yxQxhHFqAun2b15meKQZeFg5mHc01nKezptvSEY2wdRTy0DPuZzdY+uKRql43/4X71xT0TVz2orQlB+sgKuHiqFqvNVUBeqZ46Q1SPrFy1EJR5V/Nq1a0y6tNxUGHhXH+gxvjsEK2qh7EwFhG7WsYBe5ikhFWoaEA0guqlhpItMUBk5kpFVCWMwwjFEMdu6sZRNlaWeqYZ0aU205ggHCGZEWq+Ux4giiCc13ez8IsmnKh4OZPOeByDOuon8NXelMvtYbWWCcMRU2kJKYfJKEkFBponBhBB1bTA/FUHoUxJN653BXkf3RHqOy7Ka13RuXFNpZrw6WbaUOSEtATJ6p8GARXlwZv0FqDxfDRAE5kpaWlpUtzMq8cjaUUjumoSF9IHuo7pB2QkiXAjqQwJpk2TcQyk8Pb2V6knCgRNVJc0GamReHU1pklSxMi6aMF5SReotXDJHy7Tp51p0OpGmzuSRtkjSgJkWSuds1h8jKC6Zn2ZvSL23pLVG3MV/L1nNyEbdXeXojslJ7OiPoUsR9IrpZxCUz4kwqg/yEs60aBSPnhP5lJ7yPZGpQ0pFcEE+TUAjbk1pEGquByExPRF6Tc2B2o8vws3rNVAfrIeqqqqoVi8q8SgTsna503tAev9UNq+hG3VIuno+zF5B9CKyZ+LKmL2UaH4NmianRMzovVSPF1YVKV4LCNSCJE0zQSqZdoVUwxupIvExGgVdsoYhi4tIStmJMcowmgVIpggrRJxtbM40BcP4rnwrnE+rjbCn0wtjmVVP7PZ6NIBON6oIoMlp6IzszU1XUVVTu4DKghp6ZxJMWTkX8TzEdCyhQ1BHxyVBDTlrSmvgyqe10G1oJlz+9BpzgoxVNHczKvFo9jKQEICE1ADU19RBTVmQLR0VUFcbjngksPKlDReAXASupNMVsipogiqeKkaaoJua5H4eTYlb/NxlYgxWNcEmo7N1FxuNgQYXGumt9vOIANLjlH2a4IO8SR+ahOK2COJEEUi5gZpLiphMMJWxJKjKj/I2ynJkRMp6ezR1w5RFlu9YJVmOpJwLt3BYhemUvQQ0vShRjtATtlj0KS0dP1L6qSwgxzOsoJnW5drKPNVzKWttVRBSeqRAIMkPoWofz/hHC1GJp3oMIlPlhRtQh+QjwtWhSa0n4tXhYVaQ/WLDfBu9Q0JyAIavzIfMAemcV9Efix1QTMAVUEp67zOvqxlNsaOh0MLnzSrWy8omZkacR45ic3JFAHWON8j6u8lqkIHje1ntJpHgrcgkJyMHVhSshBMXj8NH+z/QGQvSyrwMQqv7Gj7pvhp8F48UCT2A5XbNg7vGLYWjl47A1qObBe+NjtnVLKq/VXnIeF4ral43cisNN5PjmW6mca113iAsF2sSVeo1Vw/HfxVnqsRQnNzziD2wU6OoxFNR62qxpKpaJhsRL4QErA/iQcRT1kxbNTVwNXoIfDb+n0aykP5EmqjpAsHK2sazTLKhsjKz4PFlT2hJadq2rKIU9h3aC/tK9rWQKq2fbOroaQz2rv07Y8/cayU8KRtZPcPU9enZB768ZBUUnyiG97e9py3bsrnLIb/vYPjftS/A1bKrQveVIshzdVPnr4gib5SGSmFz0UYorSqF2uqQm2wGQU3307Gc8uWSt25MOo9llHHqSadYcVGnUJ9UUrqbEEiASYMmw8Ce+ZCanApl1WWwZvdbUBtyrEm31Cy4f+aDPBR6Yf2fIVhb48w8aqskGStJZI7nXDOaBim1S8rkkrpsEpWFdnt1oapQ2MnhSEoRE/HIJQzVYENAAEmHFq+GLB5+ktWT4zyeIdLC4Yk03epe1/xMfAXRAz54ZgtU4PQr8CwR23FjmlaKiYlCSThbiuHK9Suwr3gvBPwBGD10NNw5YyHUBkN4LwL5wpihWHuh2JnjxJwyZio3/NZdWxsnj0IwlaBRNPMGKbwa1OI5KSgFwr32Rki7etQBUqjDSa8Q3lda7CKJ6avKMtgiSqtZcbMWCssLDQuKhOHvNhnE8YuE2nXV+Yh47qlqM66orXZZSVbUJa4L6kId6ZdkMX0smrAUemf3geMXjsHlssuQnpIGN2/cdGFcMGo2Y8/1Rn0kY6BfdUg90G6l4Xlp0niHRMrCmZaO81EGRBZveHRKfiWY61VLY43Qd6IST5lNHtMFfMLNZPJhRbGyDTTeU+6lYfko3fgnR0L3kd24sNScLlB1sRquHy8ThevpX1kpWT9+RryVjVJaVgq7C3czO48cLYGvP/YvMHzgcNizdw/0zesLC+csgh7ZPaC0vBQ+2rIejp86DvkDBsOq+1bBwZKDkNszF/buL4Rde3dC/z79YcHsRZDTPYfjb9i6AY6dPMpFRsprxNCRsOLuFbBt91bog+X1zu0Np8+ehrfeWw1PP/EMdEnpwun/7V/+HX7zp99AVXUlDBs8HObOnAtZXbPQSpfBxm0fw+FjhzneSMxvfsGdkJKSApt3bIJFcxfD/kNFsOb9d1iGBbI+ZVSfrR/B8dPHOZ3iIuHPECF+pGy6wcVtbp8hfYfC8sX3wY7C7ShvH8jrmQdnz5+Bdz56B4I1NTBl3FSYPGYKy3752mXYsHMDXLx8Hnpm94RHlz8OJScPw983rWGc75g8B1KSUmBH0TaYO2U+HEJLe/L8Cbj7jntgd/EuyMvJg9zsPDh36Sys2/EuBEO10Bvv3TFhDnTPzIaK6nLYtn8LnL50ml3aoX2HwfTRM9CiJeK9U0ZdsAKykr2ycpl0ZzDNB7vX6Toq3aDP0QPHQPeMbCivKofMtEzhiaGOarMTiXhSv8JOujDhCFxnqKRfdxguruPOSottvjN0SxvxKrbvapJARDC0cA00m4mVVLOaVFnzHjV8fUjMeh5bexr2/GY/fPJsEdRUBPk94JffW8rHrB9MZqDERA1WVOUjZ0spvQKay8JeMeAX/USwNgipKamw6v6vQGZGJmzZuRmf+ZEgD0Aa9ozkulDIH5APRQeL4Mixo5CRmolkfBjSUtMw/hZISEhgQlF8cmWi5TVhzEQ4feYUfHbhMxgyaAhMGD0R1m9aD7W1tRAKhWDdR+9hj3wDumVkcb7kKm3esRmSk5Lhvi/dz+VkpGbA8rvuA/qa0Y5PdsCYEWNFFbElu2B9HjLq40cLf7+Ujzs9NYss60Ydl2oHwk4pnJr4onzHjRwPZ86dhguXzkN+/8Ewfvh46Jc7AObPuBNu3KiGHXu3Q3bX7vDA4gfAV+/jNhPyAKQnp8OXZi+FpIRE+OTAbhgxaJQmiYo3Jn8snL1wFi5cvgADew+C0YPGQkogBZbNuZ/ruvvgLvCjybxrxlJIDaRCWlI6LJy6GBIxz/3HPoUeXXu68uT64NE1VXTWlTcqYe64+bBs5n0wfcRM8NVRx18HXQJdYMbombB132a4GRRWkHVEple4CF0UuqV0SOmtxg71iodL/Cnjqk/STXWf4wg9ZCsq7+tr47VDLNyLavFUJlSAL+AIQl5iA3a4JIAaxJqWj+6VHS/nRvShpUzr2QX2/v4AlLx2QswgqRY2exLZG1Ei1Ylkd89GK7UQAgGcmBkynMsipR05dBQkJSZB4aeFUHy4mBV99sw5bNVu3BSNsb94P2zZvpnPC6YXMNk2bv0Y9u3fB+cvnIcJYydwrz+g38CIedVJd3hf0V5MuxH69u4LT/zDP7KVfWvtapRtAbs7u/bs4nKqfVXwwssvQHl5GVq/KshIy4ApE6dw/OysbOGW7tjCdTh56gTnRXiY9Tl0+BBbhNkzZ0P/3v3hwOEDQkFJwQxPgTsY+a5Nz0moMTfG/fTgp7AJ69+3dx94bOXjkJPVA67iC14KFy5dhD379sCZs2ega2ZXzByJpwwoljG43xCWdQd6Cp/s341W/hQ8vPwRVjoVb/+R/bDtk23Qu1dv+Mo9D7OFG9pvGBOr6EgRlJwogYAvANPHzYA8tGBpXcSL5Z04Hi4q+RQ+u3geVix8gOvP4z3ltkrXOiczh8nbM6sXTB0zDRJ8CfDx7g0wZ+Y8uHjlIuwv2Q+jkfwUaA6CyKTUSgNG1svQK2HRhFa7X7q7rZzL8mFccn8bTdzofER+zQkxEY9EF2M4OVDVM5fSNvOHqrRxT9Y+PQ+/WoYzmpcPXvdMpsj8FDCm5LJSZDF69eyFPX4ISo6VQCEqy+dXPofh6M5RmDFlBh8qpGLj3lBjASUvPszMQOXCUFaGri7mfeLkcT4ojB89PmJeFZUVjlSYLlRLY12AxMRE3YCymvxBveeU8VMgf1A+lFeUM/Eo+FEBM9Iz+fx6aakctDtZdyPlD1OfLl1SWUHkaMkok2bPKIX7G0Dqmx1CJjGOrq0RExLU8RxBl5fc5oljJ8GEMRPgwucXYNuuLRC8WQOQIV0nsnip4mtPpWXYZtzTG0qtxubc89fp/BPRIyFLR2HyqMl8qJCSmMxeCudZiu+7MF29zIc7WvSSOGBFQ+hFUDh2+igcOyWOMUPG8uQRucyD+uTD3uJCGD8MO85k4ern472S44chVEeTHIoRsnRWM6lrrJ40lnHuaTIqkurOzUwvsCYBNQ/UY8PVbLUxngKOBtlqatqHX5IGckvEtJnsCkg1xK8VGniQTApBYvig+7CuPBFTegyVXk+p0RMRj6skTwVmzuzCeXTt/vbGS7oBRXQflEtCrFv/HuwqFNZGhcHoCuogsyqvLOdbXbuiguM9GvsNHTwUDhw60GReI4cLF4sD5eWZ+GCgjfuzZhTAmFFj4PW3X4PikmJYsuAumDZpGsepRveOQriXq+X4JXQKXB9pPVWZmnR4UlUt8qBxKgfCAy2Tuq66UQU5+GeK7FQAoEdOLxzPXYLn/vx7yM7OhrsXLIUVSx+E3//ld2Y07Lxu8DVZKT1BIQs0xzjctxl6XlElvum0Yft6KDxY6JowmTZ+Oj/r0iXd+ZYIVYGIx7wTGdG4nkJ21xwxxEBvhzyaIM5o9svtz88mjprkknfxHUvgFA4FgjUVDsmcLF1k0ZZOvqNTnOTi1fhO5a7MpbIRuvJO8WFuuWQLdxGTxRO6hX/oMvJBJMTG9vvR78XrBrwWX7cRJCQSqV6EPrvld4XrR0tFz61mxdQQTkcWuPNLYDyRk1V47sNzg6CyFoeOFMO8gnkwp2AuNmQXxmxQ/0Hw6luvOC91eRpbqG3x4YPoosyBuZgmLS0dxo4cC92zuvMY8BASxJUXZjZoAOa1GvNSqKm81MwbSYbnVahoPXJ6wqJ5i9gVJQWhMB6tSZ+8PjBpnFCQBFSeYyeOwYK5C+COGXegi5sCqoOgMliGO2R90P3l+kgZbtwUJKBw7fpVHLedgf59+8PK5Svh3IVzXG+qC3kEN24KYoogO0ZD5jzscJYuugcndPbDydMnZL9JE2SyQWTK46eO4QTRPJg5eRYkJyfDYBwj6iCJxtdKMeV5ybFDUDC5AGZOKsDxbQpH6d9nALz94Ztw4sxxnKyZDTPHz8QxbyrmKTtIUmo1dsX4NI6mSZ9hg4ZDJeLbLbMbexgH0bXduONj2LBtgxAF061a9hXoifj/4X+e47juL2hQHMEY5TpyMiaYOGHxvRZOR3I6FaeuDgz6zJxcMbEJE1Xdijq54lg5JAD+MoEPfA8XoAPf1NO5OALyOgB+fR/PMX6vSTlwae8VEUempXOfOsf49KsHzofTinSsOvjhTzTKpnhocWng/bfVL6IiXoOZU2fBxHEToRJnFBPo50pkkTkx/ktA8uFRVlUGL731Eo+7Zs+Yzc9ee+dVnHWr4OPFNyivqyKv8ZgXNmJCUoLTUVBestMReYtOaOO2jRx30oTJkJ6RjrOnO5gYA/sPhP79BsD23ds4OlmXq9cvw9/fX8PKMR3d43Kc8VRyVuDs3Iuv/x9+yRZlmCbrQzIkChn4kB3fK2+/wmPEXkiiubPmQbduWTyR8/a6t8inFYfETqVT5RQdLoJNOzbCgL4D4O5FS1HnGmD1ujehmgirXsph8iulV+G9j99l6zFtwnSePXRA9WqU4wZUVFXAa2tfhWvoTk4dPw3GjhjHM71+7JAuX7sC729Zxx0WWSxyIVWQPGBS0Dj2zXVvsKs5etgYyO2RB4UHCpF0m/A9Xh1atSDPzgaD9N5OdBg1OOFG6ZQFpnrxeJTGj/wp5g14boLPxbVr9IT5CDlkXPXciKc5q+J6Pr3IRLr2RVvQ9vTp0zzI7jc/l38CJAax4nUCv8ejnooE41kdbPMkH4xcNQQu7bkMl/ZdhX6z82DckyPg/X/ezDObzjhRVJADV8wY3Kp78pMiqI6Vm1j1VGatnKyUxxIdg+b4CEZP1rhTE71qTMGIOjR/KKy898uws3AnrN/8ofsVmMqMjT2xvnHu+uU1PfLEUyMA/d7MSG9acUdwedf9oTKGwQOHwoq7VsDuot3w8fYNYV7XyXd9TuZNw6HwUs6M49RoneB2V/FM/BVbXHpiKoBh4RTeysLp/MSJ0ivzIlyZHDFMG3AepsVDDtTh+HXAgAFN1j82V5PKRKvhT6Lf3uE3DNgM4U3sWf04xSt6GepO0K0cnAmDlvSD7BFZ0HtmGeRO7gH7/ruYp3MTUrA4JphDMpfZN0FW5NKfRstojMMovKuBwtW9SQbpBC4eqdYJRy7PPX0ZgYiL8D0iNQxZXprup3Dy7HH2BML0I3yL2zscASUkLgIambC3YiiME89kl/tXCqYMCwoWsqw0Nh07XMwenjyL7imJan4bRbOctFC1k8ksTztQoxuihVN+1ZHpZ0rHVFZ8rakj7jK5pC7q53TPIBnHk9dmG2mdDKczqhHCP4t1QsVMHRvxyHuRbqEY3+ENdHto7FVfRwM8afFQ+MrPqmDvcwchOTMJKvD8+Joz+Nu9INDvl7RfrV60kyRqdkkCp31xA1gNMAMlZpVU59NohsnTFi6ozAaIQAzTcrnJp9nuNLKyxJHKNFioTkP1IRiF38BJSU7Bl/jXYe3Hf4dzl8+hm46dmhHMsh3iSQUwyCSSRPi6lplho0wYSfwTDHD9AEgylN5PjhwySspaCu9uWouynuWhgMNoaigSwU1mF3Ei4BPBgGgj7OWVnsfz9m4mCdW5YRUdC+YhnCxAd/4uOSXIEYWMQNAYb8fmauKYKf/e/vjbowTxMpJfMOI3J8L8LEjPCoWxamzpFOm4dzKA8PZC2tLJmpjXpkK7ei0VV36STinUIxCtUaNo8KVCKb65WWiQT+hg48fhelUvs2QcdTucjF4XLFLDGmQUhk4tzKEemGwlgV0/VzXmlxk0ZzayKUXS9fYC4LSD0G3xXGNtYizPNcmU3oQhq9nJujpjVbyrHFmmyqeRfokHTvvHyBiujqehzEsaU+Lwq3VcTWoHcitxYoOHG2Tk8GU6uZ+NiKQBliSTWqn1n8ERDa/GatzOHqLpynksoqPkEm3Ds9Fq3BTJVAsrQinFaKQAkltaI8Iok0c5TOXh2LqMyIqpizesMc3smlXQxsrpgxzie4lJ7eMU7ekRjAfaZVD1lF4EF2x080Z+jpfhdDbUbmIWKzzZREWERC7jwc0vSU5xvG1mXrPKKPKaDSdl51kSRWzPc87bJFgrkc3kqUfWWCgcm6uJOflpjEevDpB19PqApoRols1bKQ2Ay0Ipl0ZSg4hm9hwKWKX8XnK4lF80n9uSKU11t76ZzEVK2dD6niIJZ2NovdfqavmcxnX34uHuO/l5e3x3Waq51ESSh1FhFFPElMrLycOn0UldCuJWUCZBpODxGkRHIOul0qns8L74XaAY+/M5K76UTcEhiaSL1KKrMadsHTVxoWQ3PkX7igxNC8jnXgtn6paELRaCxCtOzMTjaWk5hd6AaBL58DUeUZJqqf7JnsvbqEqzDaIyWMZYTUWRYLqURTIorAJJZJRuuAit8Q+j/N7G8bgPqvHEpxt+p/d1GlhbN0OhtDKomQTDqon44eSSCmfiYZy7Z4KlR6jhVkQ05DUV3ZWPQwSTR3xuVEu5ncwzTQ7Rkcou0IGH5TDyNTBV7i9bPs7LTXTt8TAqbv0RxPJg1WzCeRsxOqWadCmjJ28yRkzEIyBKXjlxi0XZ5BYBi4BCIOoLdAuVRcAi0PoIWOK1PqY2R4tAVARicjUbzThFzdZGsAhYBJpCwFo8qx8WgTZAwBKvDUC3RVoELPGsDlgE2gABS7w2AN0WaRGwxLM6YBFoAwQs8doAdFukRcASz+qARaANELDEawPQbZEWAUs8qwPtCgFaBY5WOOvVq1e7kqu1hYk78UIJ4yGY9jDUZH4Xbmb9J3/SNd1vbqAGGT5crKfpDeGevfHGG/Dtb3+bo44YMQLeffdd+Pzzz+Hw4cPwjW98o7nFt7v4VGdaJ5S2AD537hw8//zzkJkp1u5sKjz00EMwbRouORin8Prrr8PPfvYzV+60puf58+dh4cKFcSo1erYNU3CviaeC4P9pDfifv8mfdE33v+gQV+LVJs+D+tQFWKdk8N3YDP7rv+FPuqb79PyLCq+++ip89NFH0Lt3b3jggQeYkCtWrPiiio9bOUQg2vR+zJgx0KNHD/j+978ftayWEK/RhpZNlPLyyy/D/fff79oibP78+bzU/YYNG6LKF48IDXfVQuAe/B1bMi5G9AHuYfcffv6ka7pPz7/IEDfikUVrSMY1JYO4OE75S+C/sRH8oRP8Sdd0n55TvLqkyfj7vug9dUuBoT2phwwZAi+99BI3/sGDB+EHP/gB5OQ4C7+2NO/2kq4UV6devXo1TJgwQYs0adIk2LFjB1y8eBFeeOEFXkj3tddegyVLlsBPfvIT+MMf/gDjxo3DlZ3FArIURo8ezTuaUiDvgtL+6le/gqKiIr6mVee+/vWv833CsaCgoBEEa9asge7du8OUKVP0M+rkqGxaPInCggULoLCwEC5fvgxr166FvLy8Rvk0JRtFDle/cO1BFi0wA5cqOQJQ+2fcf+EDVPsjRDw/1D6P13ifnrNFnInydfX8di8OjRw34tUnj8au5Tr4qnAdxQZaJdn56TBd0316zvFw+6/atCfxN5S4LPothH79+sHgwYP1kZoqlgyn7aTXr18Pv/3tb2HkyJF878UXX4Q//vGPt1Ba+0jKqyyjG9e3b1+24Hv37mXBiGTkahPBBg4cyLsTkZV/8MEHYd26dfDd736XCRQt0Jhr06ZNMHasWGWMrGoNrmlJa4oQhr/4xS8aZVGNq10T+cizoEDyLVu2DMgSUqDlIn/3u9/Bd77zHejTpw+7yt/73veiieJ6Hql+4TLxT0SLdgXV7S20cGV4qLV76bMcibcafy2Pzyke4M8G/P+K1i+pWeI0O3LciNcQGIBW7RiSTvSe3sD38TnF8zVUQ31Cfxz7PU7N0uxKqATvvPMOHDhwQB9z587VeZF7tW/fPlYIsgL33Xdfi8tpTwn37NkDFbj8+9GjR3lC4oc//CGLR64dkZJ2Jrr33nvhs88+gzlz5rRIdLKkKpDL+Ze//IXJR1hGGnOTd0HuJoV58+axjDt3is07adVqGnNTZ0idI7UHru/aLNmaUz/fYFwLlnZJq4iwvAXep+cUD6owTn49+J7G/SZaropR6xLbz4KiZtM4QkMgB3yhs/ggktnG+6EzSDx095B43CCJY9DtnAKBoHsvhFiL/+pXvwpnz1KZIvz4xz/W52T1SCl/9KMfsZvzpz/9iccgb775ZqzZt8t43/zmN5lU5DZT3Z5++mn45S9/yZaELM2jjz6q5S4pKWnVOpDbTsu7hwsffvghLpWfxu4mWeJXXnnFRd6f/vSn8OSTT7LrT8uzU6fYnNCs+vVEN/OUYem8BaEq1p1EvwvjkT0gevomofUrwP0fN7uXXWyOjE3FjRvxfHVou9GKQS0tGeFel18IhNXD5xzPJxrPX3sASbenxXWjxjOVi1wYCjTx8Nhjj7FrQ73tBx98wDOAy5cv7/DEIzdQ1ZmWiV+0aBETj8h45coVdvGaCjSeI8Un98+7f0KLGwITEqFodnPlypWM8+LFi3V2d955Jzz++OMwa9Yslv2JJ55wdRAqYlOyxVo/zutzHwTykVw4lgurimjZAoNEPJ/Y7gEaCnFRr+3xIR3r+q2A21RaX91p9JMH46I2Yrsnb2jw4XZOSUOQeKc5DpEuqfLPGM3Z5bS1ZKOJgEceeQS+9rWvsetFM5s0wVBcXNxaRbSLfK7h3ndqXLtx40ae4Fi1ahVbPpqoIEWnQApN4z4iHL2GKC8vZ2IQNk899VSr1YXGdEQqeo1AEzEqkDzBYBCuXr3Kltm0ymbhTcnWVP0a6dpxXCGPPNnMCN4Xbk/mH4Fkw3i0VRmT7r9wkBfHtwxxI56/BoEOZEFD2hIkFs1YqqJobc5Mvk/PKZ6/7lzMpNu1axfPwqlj6dKlURWFen4a51DvS425detWPn79619HTduRIpw4cQKGDh3KLh6RiVy8b33rW3DhwgV2rWlXJQp//etf4eGHH4af//znTIBnnnkGnnvuOR4nmgS51bpv3zLwx1IAAAR7SURBVL6dJ07UpIrKj8Z2W7ZsgUOHDrELSm1Br0S8oSnZmqqfN5/6vX7w4YgmYRkSrxsejirydcJyXPkMn1O8hjPxJx3JF9NK0s15h2NWujZ5Pr4ymMizlxDETSBxTMfuJ1pCIp2vZi8k1rTNe51bVSqbvmMh0PAlfI83Ha0Zjmzq0eWsxzGdH91LsoREurqd6Ga+e2uz6goRWhawdVaSbiHGRKpQPe7+mTQaGroU4ETKch7TkXvpr14PCaFPW5izTWYRaB4CRKq6KyHwT6iHwJ242SVOpNCYjtzLujVoET+J23RHWEHjXlpCLZKLDhssAm2MgG837v2xu/E8exNraMdN4riN8eImsc3YItAJELDE6wSNaKvQ8RCwxOt4bWYl7gQIWOJ1gka0Veh4CFjidbw2sxJ3AgQs8TpBI9oqdDwELPE6XptZiTsBApZ4naARbRU6HgKWeB2vzazEnQABS7xO0Ii2Ch0PAUu8jtdmVuJOgIAlXidoRFuFjoeAJV7HazMrcSdAwBKvEzSirULHQ8ASr+O1mZW4EyBgidcJGtFWoeMhYInX8drMStwJELDE6wSNaKvQ8RCIO/Fae7egpnbHuR13DOp4KmclJgTiSrx47BbUkt1xVFN31h2DrCp3PATittiRa7cg3riE9lCgZdtPQsPNPWK9TdotiDY28SfgTkJHwVdfHjOCanccWrA1lnA77BgUCw42TvtAIG7Ea7xbkKowLh5KuwchGRsCq3i3oEDtMd4tKKnyt8jNpvcpU7vj5ObmunbHUbnTjkG0fLgK4XYMop1yaDFV2u3GBotAWyAQN1czXrsFRdodR4F3O+4Y1BaKY8u8NQTiSDxcnreFuwU1VSXaHYf2XaO93WiHHNodxwy0YxDtBqQO2gJKBbVjEC1zTjunPvvss3orqVuD0aa2CDQPgbi5mvHaLSjS7jiq2rfjjkHNa3Ibuz0gEDeL90XsFmTujhMNzNtlx6BoONjn7QOBuBEvXrsFmbCZu+NEg/N22TEoGg72eftAwO4W1D7awUrRiRCwuwV1osa0VelcCMRtckXBZHcL6lwKY2vTOgjEbYzXOuLZXCwCnRMBS7zO2a62Vu0cAUu8dt5AVrzOiYAlXudsV1urdo5AVOL5fG2xUW07R82KZxFoAgG/Pyqtov8eLzk5GX/Mgz/nscEiYBGIigBxJSkpKWq8qNSk37FZ3kXF0UawCAgE0EYxZ6KEqMRLT08Hcjet1YsGpX1+uyNAHCGuEGeihajEowyys7PBh3+WfNHgtM9vVwSYdPhHXIklxPTNFWU6r169CvQ9NMyfC7HBInC7I8DGiCiBlo5IF4ubSZjFRDyKSBnSUVlZCdXV1XDz5k2or6/nAm2wCNxuCJABIt1PSUlhXsTiXpoYxUw8lYgKaG4ht1uj2PpaBKIhENMYL1om9rlFwCLQPAQs8ZqHl41tEWgVBCzxWgVGm4lFoHkIWOI1Dy8b2yLQKghY4rUKjDYTi0DzELDEax5eNrZFoFUQsMRrFRhtJhaB5iHw//+bh4rrmj8+AAAAAElFTkSuQmCC"},6119:(e,d,i)=>{i.d(d,{A:()=>s});const s="data:image/png;base64,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"},28453:(e,d,i)=>{i.d(d,{R:()=>t,x:()=>l});var s=i(96540);const r={},n=s.createContext(r);function t(e){const d=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(d):{...d,...e}}),[d,e])}function l(e){let d;return d=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),s.createElement(n.Provider,{value:d},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/433ca74c.5daf400e.js b/Doc/assets/js/433ca74c.5daf400e.js new file mode 100644 index 00000000..82e4477a --- /dev/null +++ b/Doc/assets/js/433ca74c.5daf400e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[5973],{45786:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var i=t(74848),o=t(28453);const s={id:"ue-index",title:"Overview",slug:"/unreal/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/index.mdx"},r=void 0,l={id:"ue-index",title:"Overview",description:"The mod.io Unreal Engine plugin enables game developers to easily integrate mods into their Unreal Engine 5 games.",source:"@site/public/en-us/index.mdx",sourceDirName:".",slug:"/unreal/",permalink:"/unreal/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/index.mdx",tags:[],version:"current",frontMatter:{id:"ue-index",title:"Overview",slug:"/unreal/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/index.mdx"},sidebar:"sidebar",previous:{title:"Home",permalink:"/"},next:{title:"Installation & Setup",permalink:"/unreal/installation-and-setup/"}},a={},d=[{value:"Engine & platform compatability",id:"engine--platform-compatability",level:2},{value:"Engine compatability",id:"engine-compatability",level:3},{value:"Platform compatability",id:"platform-compatability",level:3},{value:"Features",id:"features",level:2}];function c(e){const n={a:"a",h2:"h2",h3:"h3",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"The mod.io Unreal Engine plugin enables game developers to easily integrate mods into their Unreal Engine 5 games."}),"\n",(0,i.jsxs)(n.p,{children:["The plugin provides a C++ and Blueprint interface around the ",(0,i.jsx)(n.a,{href:"/cppsdk/",children:"mod.io SDK"})," to connect to the ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/restapiref/",children:"mod.io REST API"}),". Also included is a set of UI components to easily create a custom user interface that matches your game's style, plus a comprehensive template UI to get you started."]}),"\n",(0,i.jsxs)(n.p,{children:["You can download the ",(0,i.jsx)(n.a,{href:"https://github.com/modio/modio-ue",children:"mod.io Unreal Engine plugin from GitHub"}),". Once you have, follow the ",(0,i.jsx)(n.a,{href:"installation-and-setup/",children:"installation guide"})," for installing and configuring the plugin. A series of ",(0,i.jsx)(n.a,{href:"getting-started/",children:"quick-start guides"})," are also available to familiarize yourself with the plugin's core features."]}),"\n",(0,i.jsx)(n.h2,{id:"engine--platform-compatability",children:"Engine & platform compatability"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io plugin is generally maintained to support the 3 most recent versions of Unreal Engine. If you are using an older version of the engine, you can access the last supported release of the engine from our ",(0,i.jsx)(n.a,{href:"https://github.com/modio/modio-ue/releases",children:"releases page"})," on GitHub."]}),"\n",(0,i.jsx)(n.h3,{id:"engine-compatability",children:"Engine compatability"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Engine Version"}),(0,i.jsx)(n.th,{children:"Last Release"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE4.26"}),(0,i.jsx)(n.td,{children:"2023.11"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE4.27"}),(0,i.jsx)(n.td,{children:"2023.11"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE5.0"}),(0,i.jsx)(n.td,{children:"2023.11"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE5.1"}),(0,i.jsx)(n.td,{children:"2024.6"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE5.2"}),(0,i.jsx)(n.td,{children:"Current"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE5.3"}),(0,i.jsx)(n.td,{children:"Current"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE5.4"}),(0,i.jsx)(n.td,{children:"Current"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"platform-compatability",children:"Platform compatability"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io Unreal Engine plugin supports Windows, Linux, Android and macOS as part of the public release. For access to Windows (GDK), Xbox, PlayStation\xae4, PlayStation\xae5 or Switch, follow the ",(0,i.jsx)(n.a,{href:"/platforms/console-sdks/",children:"instructions here"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"features",children:"Features"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"C++ and Blueprint support"}),"\n",(0,i.jsx)(n.li,{children:"UGC browsing and filtering"}),"\n",(0,i.jsx)(n.li,{children:"Automatic downloads and updates"}),"\n",(0,i.jsx)(n.li,{children:"Customizable component-based user interface"}),"\n",(0,i.jsx)(n.li,{children:"Permissive MIT/BSL-license"}),"\n",(0,i.jsx)(n.li,{children:"Async delegate-based interface"}),"\n",(0,i.jsx)(n.li,{children:"Non-blocking IO"}),"\n",(0,i.jsx)(n.li,{children:"SSO authentication for Steam, Epic Games Store, console platform and custom implementations"}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>l});var i=t(96540);const o={},s=i.createContext(o);function r(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/433ca74c.ab83666c.js b/Doc/assets/js/433ca74c.ab83666c.js deleted file mode 100644 index 08320e17..00000000 --- a/Doc/assets/js/433ca74c.ab83666c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[5973],{45786:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>r,toc:()=>d});var i=t(74848),o=t(28453);const s={id:"ue-index",title:"Overview",slug:"/unreal/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/index.mdx"},l=void 0,r={id:"ue-index",title:"Overview",description:"The mod.io Unreal Engine plugin enables game developers to easily integrate mods into their Unreal Engine 5 games.",source:"@site/public/en-us/index.mdx",sourceDirName:".",slug:"/unreal/",permalink:"/unreal/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/index.mdx",tags:[],version:"current",frontMatter:{id:"ue-index",title:"Overview",slug:"/unreal/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/index.mdx"},sidebar:"sidebar",previous:{title:"Home",permalink:"/"},next:{title:"Installation & Setup",permalink:"/unreal/installation-and-setup/"}},a={},d=[{value:"Engine & platform compatability",id:"engine--platform-compatability",level:2},{value:"Engine compatability",id:"engine-compatability",level:3},{value:"Platform compatability",id:"platform-compatability",level:3},{value:"Features",id:"features",level:2}];function c(e){const n={a:"a",h2:"h2",h3:"h3",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"The mod.io Unreal Engine plugin enables game developers to easily integrate mods into their Unreal Engine 5 games."}),"\n",(0,i.jsxs)(n.p,{children:["The plugin provides a C++ and Blueprint interface around the ",(0,i.jsx)(n.a,{href:"/cppsdk/",children:"mod.io SDK"})," to connect to the ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/restapiref/",children:"mod.io REST API"}),". Also included is a set of UI components to easily create a custom user interface that matches your game's style, plus a comprehensive template UI to get you started."]}),"\n",(0,i.jsxs)(n.p,{children:["You can download the Unreal Engine plugin from the ",(0,i.jsx)(n.a,{href:"https://github.com/modio/modio-ue",children:"mod.io GitHub repository"})," and follow the ",(0,i.jsx)(n.a,{href:"installation-and-setup/",children:"installation guide"})," for installing and configuring the plugin. A series of ",(0,i.jsx)(n.a,{href:"getting-started/",children:"quick-start guides"})," are also available to familiarize yourself with the plugin's core features."]}),"\n",(0,i.jsx)(n.h2,{id:"engine--platform-compatability",children:"Engine & platform compatability"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io plugin is generally maintained to support the 3 most recent versions of Unreal Engine. If you are using an older version of the engine, you can access the last supported release of the engine from our ",(0,i.jsx)(n.a,{href:"https://github.com/modio/modio-ue/releases",children:"releases page"})," on GitHub."]}),"\n",(0,i.jsx)(n.h3,{id:"engine-compatability",children:"Engine compatability"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Engine Version"}),(0,i.jsx)(n.th,{children:"Last Release"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE4.26"}),(0,i.jsx)(n.td,{children:"2023.11"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE4.27"}),(0,i.jsx)(n.td,{children:"2023.11"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE5.0"}),(0,i.jsx)(n.td,{children:"2023.11"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE5.1"}),(0,i.jsx)(n.td,{children:"2024.6"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE5.2"}),(0,i.jsx)(n.td,{children:"Current"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE5.3"}),(0,i.jsx)(n.td,{children:"Current"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"UE5.4"}),(0,i.jsx)(n.td,{children:"Current"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"platform-compatability",children:"Platform compatability"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io Unreal Engine plugin supports Windows, Linux, Android and macOS as part of the public release. For access to Windows (GDK), Xbox, PlayStation\xae4, PlayStation\xae5 or Switch, follow the ",(0,i.jsx)(n.a,{href:"/platforms/console-sdks/",children:"instructions here"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"features",children:"Features"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"C++ and Blueprint support"}),"\n",(0,i.jsx)(n.li,{children:"UGC browsing and filtering"}),"\n",(0,i.jsx)(n.li,{children:"Automatic downloads and updates"}),"\n",(0,i.jsx)(n.li,{children:"Customizable component-based user interface"}),"\n",(0,i.jsx)(n.li,{children:"Permissive MIT/BSL-license"}),"\n",(0,i.jsx)(n.li,{children:"Async delegate-based interface"}),"\n",(0,i.jsx)(n.li,{children:"Non-blocking IO"}),"\n",(0,i.jsx)(n.li,{children:"SSO authentication for Steam, Epic Games Store, console platform and custom implementations"}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>r});var i=t(96540);const o={},s=i.createContext(o);function l(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:l(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/4b65d6a2.3e711868.js b/Doc/assets/js/4b65d6a2.3e711868.js new file mode 100644 index 00000000..6ac37ee5 --- /dev/null +++ b/Doc/assets/js/4b65d6a2.3e711868.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[433],{12291:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>a});var t=o(74848),i=o(28453);const r={id:"ue-android-configuration",title:"Android Configuration",slug:"/unreal/android-configuration/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/android.mdx"},l=void 0,s={id:"ue-android-configuration",title:"Android Configuration",description:"Single Sign-On (5.4 onwards)",source:"@site/public/en-us/android.mdx",sourceDirName:".",slug:"/unreal/android-configuration/",permalink:"/unreal/android-configuration/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/android.mdx",tags:[],version:"current",frontMatter:{id:"ue-android-configuration",title:"Android Configuration",slug:"/unreal/android-configuration/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/android.mdx"},sidebar:"sidebar",previous:{title:"Mod Creation Tool",permalink:"/unreal/mod-creation-tool/"},next:{title:"Unreal Plugin API Reference",permalink:"/unreal/refdocs/"}},d={},a=[{value:"Single Sign-On (5.4 onwards)",id:"single-sign-on-54-onwards",level:2},{value:"Configuration",id:"configuration",level:3},{value:"Getting the Token",id:"getting-the-token",level:3},{value:"Single Sign-On (Pre-5.4)",id:"single-sign-on-pre-54",level:2},{value:"Configuration",id:"configuration-1",level:3},{value:"Getting the Token",id:"getting-the-token-1",level:3}];function u(e){const n={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"single-sign-on-54-onwards",children:"Single Sign-On (5.4 onwards)"}),"\n",(0,t.jsx)(n.p,{children:"As of UE5.4, there is better support for obtaining an IdToken for Google Authentication. However there are still some changes that need to be made."}),"\n",(0,t.jsxs)(n.p,{children:["If you are on a Source build, open ",(0,t.jsx)(n.code,{children:"Engine\\Plugins\\Online\\OnlineSubsystemGoogle\\OnlineSubsystemGoogle.uplugin"})," and add Android to the ",(0,t.jsx)(n.code,{children:"PlatformAllowList"})," array. If you are on a Launcher build, you can simply copy this plugin from this directory into your projects Plugins directory and make the appropriate change."]}),"\n",(0,t.jsx)(n.h3,{id:"configuration",children:"Configuration"}),"\n",(0,t.jsx)(n.p,{children:"Next, update your AndroidEngine.ini file to contain the following:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'[OnlineSubsystem]\nDefaultPlatformService=GooglePlay\nNativePlatformService=Google\n\n[OnlineSubsystemGoogle]\nbEnabled=True\nClientId=your-client-id-here\nServerClientId=your-server-client-id-here\n\n\n[OnlineSubsystemGoogle.OnlineIdentityGoogle]\n+ScopeFields="email"\n+ScopeFields="profile"\n+ScopeFields="https://www.googleapis.com/auth/userinfo.email"\n+ScopeFields="https://www.googleapis.com/auth/userinfo.profile"\nbRequestIdToken=true\nbRequestOfflineAccess=true\n'})}),"\n",(0,t.jsx)(n.p,{children:"This will ensure that you are using OnlineSubsystemGoogle as the native platform OSS in order to perform SSO."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"bRequestIdToken"})," will request an IdToken that you can pass to mod.io's authentication service. ",(0,t.jsx)(n.code,{children:"bRequestOfflineAccess"})," will request a server-side token that can be used as an alternative to the IdToken."]}),"\n",(0,t.jsx)(n.p,{children:"Ensure that you replace the ClientId and ServerClientId with your client IDs from Google Cloud Console. The ClientId should be the Android OAuth Credential that you have linked to your title in Google Play Console. ServerClientId should be the Web Application OAuth Credential that you configured."}),"\n",(0,t.jsx)(n.h3,{id:"getting-the-token",children:"Getting the Token"}),"\n",(0,t.jsx)(n.p,{children:"Once you have configured the above options, you should be able to obtain either an IdToken or ServerAuthCode that you can use with mod.io authentication."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-cpp",children:"const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::GetByPlatform();\nconst IOnlineIdentityPtr OnlineIdentity = OnlineSubsystem->GetIdentityInterface();\n\nOnlineIdentity->AddOnLoginCompleteDelegate_Handle(0, NativeLoginComplete);\nOnlineIdentity->Login(0, FOnlineAccountCredentials());\n\n// In the NativeLoginComplete delegate, however you set it up, if it was a successful login, you can then obtain the Server Auth Token as follows:\nFString IdToken, ServerAuthToken;\n\nUserAccount.Get()->GetAuthAttribute(AUTH_ATTR_ID_TOKEN, IdToken);\nUserAccount.Get()->GetAuthAttribute(AUTH_ATTR_AUTHORIZATION_CODE, ServerAuthToken);\n\n// Now perform Auth to the mod.io service\nAuthParams.AuthToken = ServerAuthToken;\nAuthParams.bUserHasAcceptedTerms = true;\n \n// Alternatively you could set AuthParams.AuthToken = IdToken and use EModioAuthenticationProvider::GoogleIDToken\nModioSubsystem->AuthenticateUserExternalAsync(AuthParams, EModioAuthenticationProvider::GoogleServerSideToken, FOnErrorOnlyDelegateFast::CreateUObject(this, OnAuthenticationComplete));\n"})}),"\n",(0,t.jsx)(n.h2,{id:"single-sign-on-pre-54",children:"Single Sign-On (Pre-5.4)"}),"\n",(0,t.jsx)(n.p,{children:"For Unreal Engine versions before 5.4, you need to make some engine-level modifications in order for Android SSO to work. You must be using a source build rather than an engine build."}),"\n",(0,t.jsxs)(n.p,{children:["Open ",(0,t.jsx)(n.code,{children:"Engine\\Plugins\\Online\\OnlineSubsystemGoogle\\Source\\ThirdParty\\Android\\Java\\GoogleLogin.java"})," and change the ",(0,t.jsx)(n.code,{children:"init"})," method to uncomment ",(0,t.jsx)(n.code,{children:".requestServerAuthCode(serverClientId)"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Change the ",(0,t.jsx)(n.code,{children:"getAuthTokenJsonStr"})," method to the following:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-cpp",children:'private String getAuthTokenJsonStr(GoogleSignInAccount acct)\n{\n if (acct != null)\n {\n return "{\\"access_token\\":\\""+ acct.getServerAuthCode() + "\\"," +\n "\\"refresh_token\\":\\"androidInternal\\"," +\n "\\"id_token\\":\\""+ acct.getIdToken() + "\\"}";\n }\n return "";\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Finally, Open OnlineSubsystemGoogle.uplugin and add Android to the ",(0,t.jsx)(n.code,{children:"PlatformAllowList"})," array."]}),"\n",(0,t.jsx)(n.h3,{id:"configuration-1",children:"Configuration"}),"\n",(0,t.jsx)(n.p,{children:"Once you have made the above changes, update your AndroidEngine.ini to contain the following:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:'[OnlineSubsystem]\nDefaultPlatformService=GooglePlay\nNativePlatformService=Google\n\n[OnlineSubsystemGoogle]\nbEnabled=True\nClientId=your-client-id-here\nServerClientId=your-server-client-id-here\n\n[OnlineSubsystemGoogle.OnlineIdentityGoogle]\n+ScopeFields="email"\n+ScopeFields="profile"\n+ScopeFields="https://www.googleapis.com/auth/userinfo.email"\n+ScopeFields="https://www.googleapis.com/auth/userinfo.profile"\n'})}),"\n",(0,t.jsx)(n.p,{children:"This will ensure that you are using OnlineSubsystemGoogle as the native platform OSS in order to perform SSO."}),"\n",(0,t.jsx)(n.p,{children:"Ensure that you replace the ClientId and ServerClientId with your client IDs from Google Cloud Console. The ClientId should be the Android OAuth Credential that you have linked to your title in Google Play Console. ServerClientId should be the Web Application OAuth Credential that you configured."}),"\n",(0,t.jsx)(n.h3,{id:"getting-the-token-1",children:"Getting the Token"}),"\n",(0,t.jsx)(n.p,{children:"Once you have configured the above options, you should be able to obtain a server side token that you can use for auth with mod.io."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-cpp",children:"const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::GetByPlatform();\nconst IOnlineIdentityPtr OnlineIdentity = OnlineSubsystem->GetIdentityInterface();\n\nOnlineIdentity->AddOnLoginCompleteDelegate_Handle(0, NativeLoginComplete);\nOnlineIdentity->Login(0, FOnlineAccountCredentials());\n\n// In the NativeLoginComplete delegate, however you set it up, if it was a successful login, you can then obtain the Server Auth Token as follows:\nconst FString PlatformToken = OnlineIdentity->GetAuthToken(0);\n\n// Now perform Auth to the mod.io service\nAuthParams.AuthToken = PlatformToken;\nAuthParams.bUserHasAcceptedTerms = true;\n \nModioSubsystem->AuthenticateUserExternalAsync(AuthParams, EModioAuthenticationProvider::GoogleServerSideToken, FOnErrorOnlyDelegateFast::CreateUObject(this, OnAuthenticationComplete));\n"})})]})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},28453:(e,n,o)=>{o.d(n,{R:()=>l,x:()=>s});var t=o(96540);const i={},r=t.createContext(i);function l(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/4b65d6a2.b96e2355.js b/Doc/assets/js/4b65d6a2.b96e2355.js deleted file mode 100644 index aeafaa69..00000000 --- a/Doc/assets/js/4b65d6a2.b96e2355.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[433],{12291:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>a});var o=t(74848),i=t(28453);const r={id:"ue-android-configuration",title:"Android Configuration",slug:"/unreal/android-configuration/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/android.mdx"},l=void 0,s={id:"ue-android-configuration",title:"Android Configuration",description:"Single Sign-On (5.4 onwards)",source:"@site/public/en-us/android.mdx",sourceDirName:".",slug:"/unreal/android-configuration/",permalink:"/unreal/android-configuration/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/android.mdx",tags:[],version:"current",frontMatter:{id:"ue-android-configuration",title:"Android Configuration",slug:"/unreal/android-configuration/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/android.mdx"},sidebar:"sidebar",previous:{title:"Mod Creation Tool",permalink:"/unreal/mod-creation-tool/"},next:{title:"Unreal Plugin API Reference",permalink:"/unreal/refdocs/"}},d={},a=[{value:"Single Sign-On (5.4 onwards)",id:"single-sign-on-54-onwards",level:2},{value:"Configuration",id:"configuration",level:3},{value:"Getting the Token",id:"getting-the-token",level:3},{value:"Single Sign-On (Pre-5.4)",id:"single-sign-on-pre-54",level:2},{value:"Configuration",id:"configuration-1",level:3},{value:"Getting the Token",id:"getting-the-token-1",level:3}];function u(e){const n={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h2,{id:"single-sign-on-54-onwards",children:"Single Sign-On (5.4 onwards)"}),"\n",(0,o.jsx)(n.p,{children:"As of UE5.4, there is better support for obtaining an IdToken for Google Authentication. However there are still some changes that need to be made."}),"\n",(0,o.jsxs)(n.p,{children:["If you are on a Source build, open ",(0,o.jsx)(n.code,{children:"Engine\\Plugins\\Online\\OnlineSubsystemGoogle\\OnlineSubsystemGoogle.uplugin"})," and add Android to the ",(0,o.jsx)(n.code,{children:"PlatformAllowList"})," array. If you are on a Launcher build, you can simply copy this plugin from this directory into your projects Plugins directory and make the appropriate change."]}),"\n",(0,o.jsx)(n.h3,{id:"configuration",children:"Configuration"}),"\n",(0,o.jsx)(n.p,{children:"Next, update your AndroidEngine.ini file to contain the following:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'[OnlineSubsystem]\nDefaultPlatformService=GooglePlay\nNativePlatformService=Google\n\n[OnlineSubsystemGoogle]\nbEnabled=True\nClientId=your-client-id-here\nServerClientId=your-server-client-id-here\n\n\n[OnlineSubsystemGoogle.OnlineIdentityGoogle]\n+ScopeFields="email"\n+ScopeFields="profile"\n+ScopeFields="https://www.googleapis.com/auth/userinfo.email"\n+ScopeFields="https://www.googleapis.com/auth/userinfo.profile"\nbRequestIdToken=true\nbRequestOfflineAccess=true\n'})}),"\n",(0,o.jsx)(n.p,{children:"This will ensure that you are using OnlineSubsystemGoogle as the native platform OSS in order to perform SSO."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"bRequestIdToken"})," will request an IdToken that you can pass to mod.io's authentication service. ",(0,o.jsx)(n.code,{children:"bRequestOfflineAccess"})," will request a server-side token that can be used as an alternative to the IdToken."]}),"\n",(0,o.jsx)(n.p,{children:"Ensure that you replace the ClientId and ServerClientId with your client IDs from Google Cloud Console. The ClientId should be the Android OAuth Credential that you have linked to your title in Google Play Console. ServerClientId should be the Web Application OAuth Credential that you configured."}),"\n",(0,o.jsx)(n.h3,{id:"getting-the-token",children:"Getting the Token"}),"\n",(0,o.jsx)(n.p,{children:"Once you have configured the above options, you should be able to obtain either an IdToken or ServerAuthCode that you can use with mod.io authentication."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-cpp",children:"const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::GetByPlatform();\nconst IOnlineIdentityPtr OnlineIdentity = OnlineSubsystem->GetIdentityInterface();\n\nOnlineIdentity->AddOnLoginCompleteDelegate_Handle(0, NativeLoginComplete);\nOnlineIdentity->Login(0, FOnlineAccountCredentials());\n\n// In the NativeLoginComplete delegate, however you set it up, if it was a successful login, you can then obtain the Server Auth Token as follows:\nFString IdToken, ServerAuthToken;\n\nUserAccount.Get()->GetAuthAttribute(AUTH_ATTR_ID_TOKEN, IdToken);\nUserAccount.Get()->GetAuthAttribute(AUTH_ATTR_AUTHORIZATION_CODE, ServerAuthToken);\n\n// Now perform Auth to the mod.io service\nAuthParams.AuthToken = ServerAuthToken;\nAuthParams.bUserHasAcceptedTerms = true;\n \n// Alternatively you could set AuthParams.AuthToken = IdToken and use EModioAuthenticationProvider::GoogleIDToken\nModioSubsystem->AuthenticateUserExternalAsync(AuthParams, EModioAuthenticationProvider::GoogleServerSideToken, FOnErrorOnlyDelegateFast::CreateUObject(this, OnAuthenticationComplete));\n"})}),"\n",(0,o.jsx)(n.h2,{id:"single-sign-on-pre-54",children:"Single Sign-On (Pre-5.4)"}),"\n",(0,o.jsx)(n.p,{children:"For Unreal Engine versions before 5.4, you need to make some engine-level modifications in order for Android SSO to work. You must be using a source build rather than an engine build."}),"\n",(0,o.jsxs)(n.p,{children:["Open ",(0,o.jsx)(n.code,{children:"Engine\\Plugins\\Online\\OnlineSubsystemGoogle\\Source\\ThirdParty\\Android\\Java\\GoogleLogin.java"})," and change the ",(0,o.jsx)(n.code,{children:"init"})," method to uncomment ",(0,o.jsx)(n.code,{children:".requestServerAuthCode(serverClientId)"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["Change the ",(0,o.jsx)(n.code,{children:"getAuthTokenJsonStr"})," method to the following:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-cpp",children:'private String getAuthTokenJsonStr(GoogleSignInAccount acct)\n{\n if (acct != null)\n {\n return "{\\"access_token\\":\\""+ acct.getServerAuthCode() + "\\"," +\n "\\"refresh_token\\":\\"androidInternal\\"," +\n "\\"id_token\\":\\""+ acct.getIdToken() + "\\"}";\n }\n return "";\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["Finally, Open OnlineSubsystemGoogle.uplugin and add Android to the ",(0,o.jsx)(n.code,{children:"PlatformAllowList"})," array."]}),"\n",(0,o.jsx)(n.h3,{id:"configuration-1",children:"Configuration"}),"\n",(0,o.jsx)(n.p,{children:"Once you have made the above changes, update your AndroidEngine.ini to contain the following:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'[OnlineSubsystem]\nDefaultPlatformService=GooglePlay\nNativePlatformService=Google\n\n[OnlineSubsystemGoogle]\nbEnabled=True\nClientId=your-client-id-here\nServerClientId=your-server-client-id-here\n\n[OnlineSubsystemGoogle.OnlineIdentityGoogle]\n+ScopeFields="email"\n+ScopeFields="profile"\n+ScopeFields="https://www.googleapis.com/auth/userinfo.email"\n+ScopeFields="https://www.googleapis.com/auth/userinfo.profile"\n'})}),"\n",(0,o.jsx)(n.p,{children:"This will ensure that you are using OnlineSubsystemGoogle as the native platform OSS in order to perform SSO."}),"\n",(0,o.jsx)(n.p,{children:"Ensure that you replace the ClientId and ServerClientId with your client IDs from Google Cloud Console. The ClientId should be the Android OAuth Credential that you have linked to your title in Google Play Console. ServerClientId should be the Web Application OAuth Credential that you configured."}),"\n",(0,o.jsx)(n.h3,{id:"getting-the-token-1",children:"Getting the Token"}),"\n",(0,o.jsx)(n.p,{children:"Once you have configured the above options, you should be able to obtain a server side token that you can use for auth with mod.io."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-cpp",children:"const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::GetByPlatform();\nconst IOnlineIdentityPtr OnlineIdentity = OnlineSubsystem->GetIdentityInterface();\n\nOnlineIdentity->AddOnLoginCompleteDelegate_Handle(0, NativeLoginComplete);\nOnlineIdentity->Login(0, FOnlineAccountCredentials());\n\n// In the NativeLoginComplete delegate, however you set it up, if it was a successful login, you can then obtain the Server Auth Token as follows:\nconst FString PlatformToken = OnlineIdentity->GetAuthToken(0);\n\n// Now perform Auth to the mod.io service\nAuthParams.AuthToken = PlatformToken;\nAuthParams.bUserHasAcceptedTerms = true;\n \nModioSubsystem->AuthenticateUserExternalAsync(AuthParams, EModioAuthenticationProvider::GoogleServerSideToken, FOnErrorOnlyDelegateFast::CreateUObject(this, OnAuthenticationComplete));\n"})})]})}function c(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>s});var o=t(96540);const i={},r=o.createContext(i);function l(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/4dd573c0.3ed96b98.js b/Doc/assets/js/4dd573c0.3ed96b98.js new file mode 100644 index 00000000..fa71bdfb --- /dev/null +++ b/Doc/assets/js/4dd573c0.3ed96b98.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[5533],{49455:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var i=n(74848),o=n(28453);const r={id:"ue-marketplace",title:"Marketplace",slug:"/unreal/marketplace/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/marketplace.mdx"},l=void 0,s={id:"ue-marketplace",title:"Marketplace",description:"Setup",source:"@site/public/en-us/marketplace.mdx",sourceDirName:".",slug:"/unreal/marketplace/",permalink:"/unreal/marketplace/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/marketplace.mdx",tags:[],version:"current",frontMatter:{id:"ue-marketplace",title:"Marketplace",slug:"/unreal/marketplace/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/marketplace.mdx"},sidebar:"sidebar",previous:{title:"Metrics Play Sessions",permalink:"/unreal/getting-started/metrics-play-sessions"},next:{title:"Asset Support for Mods",permalink:"/unreal/asset-support-for-mods/"}},a={},c=[{value:"Setup",id:"setup",level:2},{value:"Implementation",id:"implementation",level:2},{value:"References",id:"references",level:2}];function d(e){const t={a:"a",code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"setup",children:"Setup"}),"\n",(0,i.jsx)(t.p,{children:"The mod.io Unreal Engine Plugin supports in-game integration of the mod.io Marketplace - exposing the data and functions required to build a UGC store in-game."}),"\n",(0,i.jsx)(t.p,{children:"The mod.io monetization features are need to be enabled through the web UI and, if selling the virtual currency through a platform store, will need a service to consume the virtual currency entitlements and apply them to player's mod.io account."}),"\n",(0,i.jsx)(t.h2,{id:"implementation",children:"Implementation"}),"\n",(0,i.jsx)(t.p,{children:"Marketplace functionality is accessible via the mod.io Subsystem along with all other functionality and as Blueprint nodes. Functions specific to monetization include:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.code,{children:"GetUserWalletBalanceAsync"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.code,{children:"FetchUserPurchasesAsync"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.code,{children:"PurchaseModAsync"})}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"references",children:"References"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/monetization/",children:"Monetization Introduction"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/cppsdk/getting-started/#monetization",children:"SDK Monetization Guide"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/web-services/marketplace/overview/",children:"Purchase Server Implementation"})}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>s});var i=n(96540);const o={},r=i.createContext(o);function l(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:l(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/4dd573c0.c971e0ef.js b/Doc/assets/js/4dd573c0.c971e0ef.js deleted file mode 100644 index 900ec7ac..00000000 --- a/Doc/assets/js/4dd573c0.c971e0ef.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[5533],{49455:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var i=n(74848),o=n(28453);const r={id:"ue-marketplace",title:"Marketplace",slug:"/unreal/marketplace/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/marketplace.mdx"},l=void 0,s={id:"ue-marketplace",title:"Marketplace",description:"Setup",source:"@site/public/en-us/marketplace.mdx",sourceDirName:".",slug:"/unreal/marketplace/",permalink:"/unreal/marketplace/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/marketplace.mdx",tags:[],version:"current",frontMatter:{id:"ue-marketplace",title:"Marketplace",slug:"/unreal/marketplace/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/marketplace.mdx"},sidebar:"sidebar",previous:{title:"Metrics Play Sessions",permalink:"/unreal/getting-started/metrics-play-sessions"},next:{title:"Asset Support for Mods",permalink:"/unreal/asset-support-for-mods/"}},a={},c=[{value:"Setup",id:"setup",level:2},{value:"Implementation",id:"implementation",level:2},{value:"References",id:"references",level:2}];function d(e){const t={a:"a",code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{id:"setup",children:"Setup"}),"\n",(0,i.jsx)(t.p,{children:"The mod.io Unreal Engine Plugin supports in-game integration of the mod.io Marketplace - exposing the data and functions required to build a UGC store in-game."}),"\n",(0,i.jsx)(t.p,{children:"The mod.io monetization features are need to be enabled through the web UI and, if selling the virtual currency through a platform store, will need a service to consume the virtual currency entitlements and apply them to player's mod.io account."}),"\n",(0,i.jsx)(t.h2,{id:"implementation",children:"Implementation"}),"\n",(0,i.jsx)(t.p,{children:"Marketplace functionality is accessible via the mod.io Subsystem along with all other functionality and as Blueprint nodes. Functions specific to monetization include:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.code,{children:"GetUserWalletBalanceAsync"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.code,{children:"FetchUserPurchasesAsync"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.code,{children:"PurchaseModAsync"})}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"references",children:"References"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/monetization/",children:"Monetization Introduction"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/cppsdk/getting-started/#monetization",children:"SDK Monetization Guide"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/web-services/marketplace/overview/",children:"Purchase Server Implementation"})}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>s});var i=n(96540);const o={},r=i.createContext(o);function l(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:l(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/4f8ccd8c.4c953df7.js b/Doc/assets/js/4f8ccd8c.4c953df7.js new file mode 100644 index 00000000..e86952a5 --- /dev/null +++ b/Doc/assets/js/4f8ccd8c.4c953df7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[3124],{19169:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>b,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var o=n(74848),i=n(28453),a=n(27064),s=n(89236);const r={id:"ue-submit-mods",title:"In-Game Mod Submission",slug:"/unreal/getting-started/submit-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/submit-mods.mdx"},l=void 0,d={id:"getting-started/ue-submit-mods",title:"In-Game Mod Submission",description:"Submitting a mod from inside your game and making it visible to other players involves two steps:",source:"@site/public/en-us/getting-started/submit-mods.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/submit-mods",permalink:"/unreal/getting-started/submit-mods",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/submit-mods.mdx",tags:[],version:"current",frontMatter:{id:"ue-submit-mods",title:"In-Game Mod Submission",slug:"/unreal/getting-started/submit-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/submit-mods.mdx"},sidebar:"sidebar",previous:{title:"Mod Subscriptions & Management",permalink:"/unreal/getting-started/mod-subscriptions"},next:{title:"Edit an Existing Mod",permalink:"/unreal/getting-started/edit-mods"}},u={},c=[{value:"Submitting a new mod",id:"submitting-a-new-mod",level:2},{value:"Submitting a file for a mod",id:"submitting-a-file-for-a-mod",level:2}];function m(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"Submitting a mod from inside your game and making it visible to other players involves two steps:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Submission of the mod"}),"\n",(0,o.jsx)(t.li,{children:'Submission of the mod\u2019s data (aka "the mod file")'}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["These steps are outlined below. Mods can also be edited after submission, as ",(0,o.jsx)(t.a,{href:"edit-mods",children:"detailed here"})]}),"\n",(0,o.jsx)(t.h2,{id:"submitting-a-new-mod",children:"Submitting a new mod"}),"\n",(0,o.jsxs)(t.p,{children:["To submit a mod, you must first create a mod handle using ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#getmodcreationhandle",children:(0,o.jsx)(t.code,{children:"GetModCreationHandle"})}),", and use that handle when calling ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#submitnewmodasync",children:(0,o.jsx)(t.code,{children:"SubmitNewModAsync"})}),". Note that the newly created mod will remain hidden until a mod file is added in the next step."]}),"\n",(0,o.jsxs)(a.A,{"group-id":"languages",children:[(0,o.jsx)(s.A,{value:"blueprint",label:"Blueprint",children:(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"submit_new_mod",src:n(92695).A+"",width:"870",height:"519"})})}),(0,o.jsx)(s.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-cpp",children:'void UModioManagerSubsystem::SubmitNewMod()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tFModioModCreationHandle Handle = Subsystem->GetModCreationHandle();\n\n \tFModioCreateModParams Params;\n \tParams.Name = TEXT("My Amazing Mod");\n \tParams.Description = TEXT("This mod does amazing things");\n \tParams.PathToLogoFile = TEXT("C:\\\\path\\\\to\\\\image.png");\n\n \tSubsystem->SubmitNewModAsync(Handle, Params, FOnSubmitNewModDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnSubmitNewModComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnSubmitNewModComplete(FModioErrorCode ErrorCode, TOptional ModId)\n{\n if (!ErrorCode)\n {\n \t// Mod was successfully submitted \n \t// We can now call SubmitNewModFileForMod with this ModId\n }\n}\n'})})})]}),"\n",(0,o.jsx)(t.h2,{id:"submitting-a-file-for-a-mod",children:"Submitting a file for a mod"}),"\n",(0,o.jsxs)(t.p,{children:["Once you have successfully submitted a mod, you can submit a mod file for that mod using ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#submitnewmodfileformod",children:(0,o.jsx)(t.code,{children:"SubmitNewModFileForMod"})}),". When you submit a mod file, you pass a ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#modiocreatemodfileparams",children:(0,o.jsx)(t.code,{children:"ModioCreateModFileParams"})})," containing the directory containing all the files that you want to submit. The plugin will compress this folder into a .zip file and upload it as the active version of the mod."]}),"\n",(0,o.jsxs)(t.p,{children:["In the future, if the mod is updated and requires a new mod file, ",(0,o.jsx)(t.code,{children:"SubmitNewModFileForMod"})," can be called again. The most recent mod file uploaded by ",(0,o.jsx)(t.code,{children:"SubmitNewModFileForMod"})," will be set as the active version."]}),"\n",(0,o.jsx)(t.admonition,{type:"note",children:(0,o.jsxs)(t.p,{children:["There is no callback for ",(0,o.jsx)(t.code,{children:"SubmitNewModFileForMod"}),"; you\u2019ll be notified of the completed upload by your ",(0,o.jsx)(t.a,{href:"mod-subscriptions#installation-management",children:(0,o.jsx)(t.strong,{children:"mod management callback"})}),"."]})}),"\n",(0,o.jsxs)(a.A,{"group-id":"languages",children:[(0,o.jsxs)(s.A,{value:"blueprint",label:"Blueprint",children:[(0,o.jsx)(t.p,{children:"After the callback for submitting a mod has completed, you can get the Mod Id to use for file submission."}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"submit_new_mod_file",src:n(12214).A+"",width:"862",height:"483"})})]}),(0,o.jsx)(s.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-cpp",children:'void UModioManagerSubsystem::SubmitNewModFile(FModioModID ModId)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tFModioCreateModFileParams Params;\n \tParams.PathToModRootDirectory = TEXT("C:\\\\path\\\\to\\\\mod-folder");\n \tSubsystem->SubmitNewModFileForMod(ModId, Params);\n }\n}\n'})})})]})]})}function b(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(m,{...e})}):m(e)}},19365:(e,t,n)=>{n.d(t,{A:()=>s});n(96540);var o=n(18215);const i={tabItem:"tabItem_Ymn6"};var a=n(74848);function s(e){let{children:t,hidden:n,className:s}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,o.A)(i.tabItem,s),hidden:n,children:t})}},11470:(e,t,n)=>{n.d(t,{A:()=>y});var o=n(96540),i=n(18215),a=n(23104),s=n(56347),r=n(205),l=n(57485),d=n(31682),u=n(70679);function c(e){return o.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??function(e){return c(e).map((e=>{let{props:{value:t,label:n,attributes:o,default:i}}=e;return{value:t,label:n,attributes:o,default:i}}))}(n);return function(e){const t=(0,d.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function b(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const i=(0,s.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,o.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(i.location.search);t.set(a,e),i.replace({...i.location,search:t.toString()})}),[a,i])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:i}=e,a=m(e),[s,l]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!b({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const o=n.find((e=>e.default))??n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:t,tabValues:a}))),[d,c]=h({queryString:n,groupId:i}),[f,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[i,a]=(0,u.Dv)(n);return[i,(0,o.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:i}),p=(()=>{const e=d??f;return b({value:e,tabValues:a})?e:null})();(0,r.A)((()=>{p&&l(p)}),[p]);return{selectedValue:s,selectValue:(0,o.useCallback)((e=>{if(!b({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),g(e)}),[c,g,a]),tabValues:a}}var g=n(92303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=n(74848);function x(e){let{className:t,block:n,selectedValue:o,selectValue:s,tabValues:r}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),i=r[n].value;i!==o&&(d(t),s(i))},c=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":n},t),children:r.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,ref:e=>l.push(e),onKeyDown:c,onClick:u,...a,className:(0,i.A)("tabs__item",p.tabItem,a?.className,{"tabs__item--active":o===t}),children:n??t},t)}))})}function w(e){let{lazy:t,children:n,selectedValue:i}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===i));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function M(e){const t=f(e);return(0,v.jsxs)("div",{className:(0,i.A)("tabs-container",p.tabList),children:[(0,v.jsx)(x,{...t,...e}),(0,v.jsx)(w,{...t,...e})]})}function y(e){const t=(0,g.A)();return(0,v.jsx)(M,{...e,children:c(e.children)},String(t))}},89236:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(19365),i=(n(96540),n(74848));function a(e){return(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(o.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(11470),i=(n(96540),n(74848));function a(e){return(0,i.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,i.jsx)(o.A,{...e})})}},92695:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/submit_new_mod-d860f68584f2f0b67dd74c6e95467fcb.png"},12214:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/submit_new_mod_file-e1cde8dca73f1d2d5985433981e8c5a3.png"},28453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>r});var o=n(96540);const i={},a=o.createContext(i);function s(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/4f8ccd8c.be71a477.js b/Doc/assets/js/4f8ccd8c.be71a477.js deleted file mode 100644 index 574e14a4..00000000 --- a/Doc/assets/js/4f8ccd8c.be71a477.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[3124],{19169:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>d,default:()=>b,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var o=n(74848),i=n(28453),a=n(27064),s=n(89236);const r={id:"ue-submit-mods",title:"In-Game Mod Submission",slug:"/unreal/getting-started/submit-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/submit-mods.mdx"},d=void 0,l={id:"getting-started/ue-submit-mods",title:"In-Game Mod Submission",description:"Submitting a mod from inside your game and making it visible to other players involves two steps:",source:"@site/public/en-us/getting-started/submit-mods.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/submit-mods",permalink:"/unreal/getting-started/submit-mods",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/submit-mods.mdx",tags:[],version:"current",frontMatter:{id:"ue-submit-mods",title:"In-Game Mod Submission",slug:"/unreal/getting-started/submit-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/submit-mods.mdx"},sidebar:"sidebar",previous:{title:"Mod Subscriptions & Management",permalink:"/unreal/getting-started/mod-subscriptions"},next:{title:"Edit an Existing Mod",permalink:"/unreal/getting-started/edit-mods"}},u={},c=[{value:"Submitting a new mod",id:"submitting-a-new-mod",level:2},{value:"Submitting a file for a mod",id:"submitting-a-file-for-a-mod",level:2}];function m(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"Submitting a mod from inside your game and making it visible to other players involves two steps:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Submission of the mod"}),"\n",(0,o.jsx)(t.li,{children:'Submission of the mod\u2019s data (aka "the mod file")'}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["These steps are outlined below. Mods can also be edited after submission, as ",(0,o.jsx)(t.a,{href:"edit-mods",children:"detailed here"})]}),"\n",(0,o.jsx)(t.h2,{id:"submitting-a-new-mod",children:"Submitting a new mod"}),"\n",(0,o.jsxs)(t.p,{children:["To submit a mod, you must first create a mod handle using ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_GetModCreationHandle",children:(0,o.jsx)(t.code,{children:"GetModCreationHandle"})}),", and use that handle when calling ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_SubmitNewModAsync",children:(0,o.jsx)(t.code,{children:"SubmitNewModAsync"})}),". Note that the newly created mod will remain hidden until a mod file is added in the next step."]}),"\n",(0,o.jsxs)(a.A,{"group-id":"languages",children:[(0,o.jsx)(s.A,{value:"blueprint",label:"Blueprint",children:(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"submit_new_mod",src:n(17792).A+"",width:"870",height:"519"})})}),(0,o.jsx)(s.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-cpp",children:'void UModioManagerSubsystem::SubmitNewMod()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tFModioModCreationHandle Handle = Subsystem->GetModCreationHandle();\n\n \tFModioCreateModParams Params;\n \tParams.Name = TEXT("My Amazing Mod");\n \tParams.Description = TEXT("This mod does amazing things");\n \tParams.PathToLogoFile = TEXT("C:\\\\path\\\\to\\\\image.png");\n\n \tSubsystem->SubmitNewModAsync(Handle, Params, FOnSubmitNewModDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnSubmitNewModComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnSubmitNewModComplete(FModioErrorCode ErrorCode, TOptional ModId)\n{\n if (!ErrorCode)\n {\n \t// Mod was successfully submitted \n \t// We can now call SubmitNewModFileForMod with this ModId\n }\n}\n'})})})]}),"\n",(0,o.jsx)(t.h2,{id:"submitting-a-file-for-a-mod",children:"Submitting a file for a mod"}),"\n",(0,o.jsxs)(t.p,{children:["Once you have successfully submitted a mod, you can submit a mod file for that mod using ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_SubmitNewModFileForMod",children:(0,o.jsx)(t.code,{children:"SubmitNewModFileForMod"})}),". When you submit a mod file, you pass a ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#_modiocreatemodfileparams",children:(0,o.jsx)(t.code,{children:"ModioCreateModFileParams"})})," containing the directory containing all the files that you want to submit. The plugin will compress this folder into a .zip file and upload it as the active version of the mod."]}),"\n",(0,o.jsxs)(t.p,{children:["In the future, if the mod is updated and requires a new mod file, ",(0,o.jsx)(t.code,{children:"SubmitNewModFileForMod"})," can be called again. The most recent mod file uploaded by ",(0,o.jsx)(t.code,{children:"SubmitNewModFileForMod"})," will be set as the active version."]}),"\n",(0,o.jsx)(t.admonition,{type:"note",children:(0,o.jsxs)(t.p,{children:["There is no callback for ",(0,o.jsx)(t.code,{children:"SubmitNewModFileForMod"}),"; you\u2019ll be notified of the completed upload by your ",(0,o.jsx)(t.a,{href:"mod-subscriptions#installation-management",children:(0,o.jsx)(t.strong,{children:"mod management callback"})}),"."]})}),"\n",(0,o.jsxs)(a.A,{"group-id":"languages",children:[(0,o.jsxs)(s.A,{value:"blueprint",label:"Blueprint",children:[(0,o.jsx)(t.p,{children:"After the callback for submitting a mod has completed, you can get the Mod Id to use for file submission."}),(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"submit_new_mod_file",src:n(8759).A+"",width:"862",height:"483"})})]}),(0,o.jsx)(s.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-cpp",children:'void UModioManagerSubsystem::SubmitNewModFile(FModioModID ModId)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tFModioCreateModFileParams Params;\n \tParams.PathToModRootDirectory = TEXT("C:\\\\path\\\\to\\\\mod-folder");\n \tSubsystem->SubmitNewModFileForMod(ModId, Params);\n }\n}\n'})})})]})]})}function b(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(m,{...e})}):m(e)}},19365:(e,t,n)=>{n.d(t,{A:()=>s});n(96540);var o=n(18215);const i={tabItem:"tabItem_Ymn6"};var a=n(74848);function s(e){let{children:t,hidden:n,className:s}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,o.A)(i.tabItem,s),hidden:n,children:t})}},11470:(e,t,n)=>{n.d(t,{A:()=>y});var o=n(96540),i=n(18215),a=n(23104),s=n(56347),r=n(205),d=n(57485),l=n(31682),u=n(70679);function c(e){return o.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??function(e){return c(e).map((e=>{let{props:{value:t,label:n,attributes:o,default:i}}=e;return{value:t,label:n,attributes:o,default:i}}))}(n);return function(e){const t=(0,l.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function b(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const i=(0,s.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,d.aZ)(a),(0,o.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(i.location.search);t.set(a,e),i.replace({...i.location,search:t.toString()})}),[a,i])]}function p(e){const{defaultValue:t,queryString:n=!1,groupId:i}=e,a=m(e),[s,d]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!b({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const o=n.find((e=>e.default))??n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:t,tabValues:a}))),[l,c]=h({queryString:n,groupId:i}),[p,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[i,a]=(0,u.Dv)(n);return[i,(0,o.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:i}),g=(()=>{const e=l??p;return b({value:e,tabValues:a})?e:null})();(0,r.A)((()=>{g&&d(g)}),[g]);return{selectedValue:s,selectValue:(0,o.useCallback)((e=>{if(!b({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);d(e),c(e),f(e)}),[c,f,a]),tabValues:a}}var f=n(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=n(74848);function x(e){let{className:t,block:n,selectedValue:o,selectValue:s,tabValues:r}=e;const d=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=d.indexOf(t),i=r[n].value;i!==o&&(l(t),s(i))},c=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=d.indexOf(e.currentTarget)+1;t=d[n]??d[0];break}case"ArrowLeft":{const n=d.indexOf(e.currentTarget)-1;t=d[n]??d[d.length-1];break}}t?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":n},t),children:r.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,ref:e=>d.push(e),onKeyDown:c,onClick:u,...a,className:(0,i.A)("tabs__item",g.tabItem,a?.className,{"tabs__item--active":o===t}),children:n??t},t)}))})}function M(e){let{lazy:t,children:n,selectedValue:i}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===i));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function w(e){const t=p(e);return(0,v.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,v.jsx)(x,{...t,...e}),(0,v.jsx)(M,{...t,...e})]})}function y(e){const t=(0,f.A)();return(0,v.jsx)(w,{...e,children:c(e.children)},String(t))}},89236:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(19365),i=(n(96540),n(74848));function a(e){return(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(o.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(11470),i=(n(96540),n(74848));function a(e){return(0,i.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,i.jsx)(o.A,{...e})})}},17792:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/submit_new_mod-d860f68584f2f0b67dd74c6e95467fcb.png"},8759:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/submit_new_mod_file-e1cde8dca73f1d2d5985433981e8c5a3.png"},28453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>r});var o=n(96540);const i={},a=o.createContext(i);function s(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/546be59f.aa883044.js b/Doc/assets/js/546be59f.aa883044.js new file mode 100644 index 00000000..d11310b9 --- /dev/null +++ b/Doc/assets/js/546be59f.aa883044.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8335],{45912:(e,o,i)=>{i.r(o),i.d(o,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var n=i(74848),t=i(28453);const s={id:"ue-profiling",title:"Profiling",slug:"/unreal/profiling/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/profiling.mdx"},r=void 0,a={id:"ue-profiling",title:"Profiling",description:"The mod.io UE plugin includes some basic profiling and metrics that can be viewed and exposed via Unreal\u2019s stat commands and via Unreal Insights. Profiling via the MODIOENABLEPROFILING and MODIOUNREALPROFILING_SUPPORT macros are enabled by default in the mod.io plugin for non-shipping builds.",source:"@site/public/en-us/profiling.mdx",sourceDirName:".",slug:"/unreal/profiling/",permalink:"/unreal/profiling/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/profiling.mdx",tags:[],version:"current",frontMatter:{id:"ue-profiling",title:"Profiling",slug:"/unreal/profiling/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/profiling.mdx"},sidebar:"sidebar",previous:{title:"Asset Support for Mods",permalink:"/unreal/asset-support-for-mods/"},next:{title:"Mod Creation Tool",permalink:"/unreal/mod-creation-tool/"}},d={},l=[{value:"Showing Captured Data",id:"showing-captured-data",level:2}];function c(e){const o={code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(o.p,{children:["The mod.io UE plugin includes some basic profiling and metrics that can be viewed and exposed via Unreal\u2019s ",(0,n.jsx)(o.code,{children:"stat"})," commands and via Unreal Insights. Profiling via the ",(0,n.jsx)(o.code,{children:"MODIO_ENABLE_PROFILING"})," and ",(0,n.jsx)(o.code,{children:"MODIO_UNREAL_PROFILING_SUPPORT"})," macros are enabled by default in the mod.io plugin for non-shipping builds."]}),"\n",(0,n.jsx)(o.h2,{id:"showing-captured-data",children:"Showing Captured Data"}),"\n",(0,n.jsxs)(o.p,{children:["The plugin includes two stat groups that can be shown: ",(0,n.jsx)(o.code,{children:"Modio"})," (accessed via ",(0,n.jsx)(o.code,{children:"stat modio"}),") and ModioScoped (async operations profiled for access via Unreal Insights)."]}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.code,{children:"Modio"})," includes some basic counters, such as the length of various background queues that process API requests and downloads."]}),"\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.code,{children:"ModioScoped"})," captures performance insights for a majority of the async operations that the plugin performs. This data is not suitable for showing in realtime via a ",(0,n.jsx)(o.code,{children:"stat"})," command, however it is captured when creating stat profiles for use in Unreal Insights."]}),"\n"]})]})}function u(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},28453:(e,o,i)=>{i.d(o,{R:()=>r,x:()=>a});var n=i(96540);const t={},s=n.createContext(t);function r(e){const o=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),n.createElement(s.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/546be59f.aab0b80d.js b/Doc/assets/js/546be59f.aab0b80d.js deleted file mode 100644 index 4b175abe..00000000 --- a/Doc/assets/js/546be59f.aab0b80d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8335],{45912:(e,i,o)=>{o.r(i),o.d(i,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var n=o(74848),t=o(28453);const s={id:"ue-profiling",title:"Profiling",slug:"/unreal/profiling/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/profiling.mdx"},r=void 0,a={id:"ue-profiling",title:"Profiling",description:"The mod.io UE plugin includes some basic profiling and metrics that can be viewed and exposed via Unreal\u2019s stat commands and via Unreal Insights. Profiling via the MODIOENABLEPROFILING and MODIOUNREALPROFILING_SUPPORT macros are enabled by default in the mod.io plugin for non-shipping builds.",source:"@site/public/en-us/profiling.mdx",sourceDirName:".",slug:"/unreal/profiling/",permalink:"/unreal/profiling/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/profiling.mdx",tags:[],version:"current",frontMatter:{id:"ue-profiling",title:"Profiling",slug:"/unreal/profiling/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/profiling.mdx"},sidebar:"sidebar",previous:{title:"Asset Support for Mods",permalink:"/unreal/asset-support-for-mods/"},next:{title:"Mod Creation Tool",permalink:"/unreal/mod-creation-tool/"}},d={},l=[{value:"Showing Captured Data",id:"showing-captured-data",level:2}];function c(e){const i={code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(i.p,{children:["The mod.io UE plugin includes some basic profiling and metrics that can be viewed and exposed via Unreal\u2019s ",(0,n.jsx)(i.code,{children:"stat"})," commands and via Unreal Insights. Profiling via the ",(0,n.jsx)(i.code,{children:"MODIO_ENABLE_PROFILING"})," and ",(0,n.jsx)(i.code,{children:"MODIO_UNREAL_PROFILING_SUPPORT"})," macros are enabled by default in the mod.io plugin for non-shipping builds."]}),"\n",(0,n.jsx)(i.h2,{id:"showing-captured-data",children:"Showing Captured Data"}),"\n",(0,n.jsxs)(i.p,{children:["The plugin includes two stat groups that can be shown: ",(0,n.jsx)(i.code,{children:"Modio"})," (accessed via ",(0,n.jsx)(i.code,{children:"stat modio"}),") and ModioScoped (async operations profiled for access via Unreal Insights)."]}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"Modio"})," includes some basic counters, such as the length of various background queues that process API requests and downloads."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"ModioScoped"})," captures performance insights for a majority of the async operations that the plugin performs. This data is not suitable for showing in realtime via a ",(0,n.jsx)(i.code,{children:"stat"})," command, however it is captured when creating stat profiles for use in Unreal Insights."]}),"\n"]})]})}function u(e={}){const{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},28453:(e,i,o)=>{o.d(i,{R:()=>r,x:()=>a});var n=o(96540);const t={},s=n.createContext(t);function r(e){const i=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),n.createElement(s.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/562207a5.a07c0f1f.js b/Doc/assets/js/562207a5.a07c0f1f.js new file mode 100644 index 00000000..4845440d --- /dev/null +++ b/Doc/assets/js/562207a5.a07c0f1f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[1991],{6046:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var n=r(74848),s=r(28453),u=r(27064),a=r(89236);const o={id:"ue-mute-user",title:"Muting and Unmuting a User",slug:"/unreal/getting-started/mute-user",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/mute-user.mdx"},i=void 0,l={id:"getting-started/ue-mute-user",title:"Muting and Unmuting a User",description:"Users have the ability to disable updates from other user\u2019s mods. This will prevent mod.io from returning mods authored by the muted user. There are three actions available to take: mute a user, unmute a user, and list muted users",source:"@site/public/en-us/getting-started/mute-user.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/mute-user",permalink:"/unreal/getting-started/mute-user",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/mute-user.mdx",tags:[],version:"current",frontMatter:{id:"ue-mute-user",title:"Muting and Unmuting a User",slug:"/unreal/getting-started/mute-user",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/mute-user.mdx"},sidebar:"sidebar",previous:{title:"Temporary Mod Sets",permalink:"/unreal/getting-started/temporary-mods"},next:{title:"Metrics Play Sessions",permalink:"/unreal/getting-started/metrics-play-sessions"}},d={},c=[{value:"Mute a user",id:"mute-a-user",level:2},{value:"Unmute a user",id:"unmute-a-user",level:2},{value:"List muted users",id:"list-muted-users",level:2}];function m(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"Users have the ability to disable updates from other user\u2019s mods. This will prevent mod.io from returning mods authored by the muted user. There are three actions available to take: mute a user, unmute a user, and list muted users"}),"\n",(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsx)(t.p,{children:"To perform any of these actions, the muting user must be authenticated."})}),"\n",(0,n.jsx)(t.h2,{id:"mute-a-user",children:"Mute a user"}),"\n",(0,n.jsxs)(t.p,{children:["To mute a user, call ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#muteuserasync",children:(0,n.jsx)(t.code,{children:"MuteUserAsync"})})," with the corresponding ",(0,n.jsx)(t.code,{children:"ModioUserID"})," and a callback."]}),"\n",(0,n.jsxs)(u.A,{"group-id":"languages",children:[(0,n.jsx)(a.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"mute_user",src:r(11446).A+"",width:"690",height:"320"})})}),(0,n.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"\nvoid UModioManagerSubsystem::MuteAUser(FModioUserID UserID)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->MuteUserAsync(UserID, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnMuteUserComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnMuteUserComplete(FModioErrorCode ErrorCode)\n{\n if (!ErrorCode)\n {\n \t// User successfully muted \n }\n}\n\n"})})})]}),"\n",(0,n.jsx)(t.h2,{id:"unmute-a-user",children:"Unmute a user"}),"\n",(0,n.jsxs)(t.p,{children:["To perform the inverse operation call ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#unmuteuserasync",children:(0,n.jsx)(t.code,{children:"UnmuteUserAsync"})})," with the corresponding ",(0,n.jsx)(t.code,{children:"ModioUserID"})," and a callback."]}),"\n",(0,n.jsxs)(u.A,{"group-id":"languages",children:[(0,n.jsx)(a.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"unmute_user",src:r(12557).A+"",width:"673",height:"316"})})}),(0,n.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"\nvoid UModioManagerSubsystem::UnmuteAUser(FModioUserID UserID)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->UnmuteUserAsync(UserID, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnUnmuteUserComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnUnmuteUserComplete(FModioErrorCode ErrorCode)\n{\n if (!ErrorCode)\n {\n \t// User successfully unmuted \n }\n}\n"})})})]}),"\n",(0,n.jsx)(t.h2,{id:"list-muted-users",children:"List muted users"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"/unreal/refdocs/#getmutedusersasync",children:(0,n.jsx)(t.code,{children:"GetMutedUsersAsync"})})," returns a list of users previously muted by an authenticated user."]}),"\n",(0,n.jsxs)(u.A,{"group-id":"languages",children:[(0,n.jsx)(a.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"get_muted_users",src:r(29404).A+"",width:"621",height:"303"})})}),(0,n.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"\nvoid UModioManagerSubsystem::ListMutedUsers()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->GetMutedUsersAsync(FOnMuteUsersDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnListMutedUsersComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnListMutedUsersComplete(FModioErrorCode ErrorCode, FModioOptionalUserList MutedUsers)\n{\n if (!ErrorCode)\n {\n \t// List of muted users successfully retrieved \n }\n}\n\n"})})})]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(m,{...e})}):m(e)}},19365:(e,t,r)=>{r.d(t,{A:()=>a});r(96540);var n=r(18215);const s={tabItem:"tabItem_Ymn6"};var u=r(74848);function a(e){let{children:t,hidden:r,className:a}=e;return(0,u.jsx)("div",{role:"tabpanel",className:(0,n.A)(s.tabItem,a),hidden:r,children:t})}},11470:(e,t,r)=>{r.d(t,{A:()=>j});var n=r(96540),s=r(18215),u=r(23104),a=r(56347),o=r(205),i=r(57485),l=r(31682),d=r(70679);function c(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:t,children:r}=e;return(0,n.useMemo)((()=>{const e=t??function(e){return c(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:s}}=e;return{value:t,label:r,attributes:n,default:s}}))}(r);return function(e){const t=(0,l.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function h(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:r}=e;const s=(0,a.W6)(),u=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,i.aZ)(u),(0,n.useCallback)((e=>{if(!u)return;const t=new URLSearchParams(s.location.search);t.set(u,e),s.replace({...s.location,search:t.toString()})}),[u,s])]}function p(e){const{defaultValue:t,queryString:r=!1,groupId:s}=e,u=m(e),[a,i]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:u}))),[l,c]=b({queryString:r,groupId:s}),[p,g]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,u]=(0,d.Dv)(r);return[s,(0,n.useCallback)((e=>{r&&u.set(e)}),[r,u])]}({groupId:s}),f=(()=>{const e=l??p;return h({value:e,tabValues:u})?e:null})();(0,o.A)((()=>{f&&i(f)}),[f]);return{selectedValue:a,selectValue:(0,n.useCallback)((e=>{if(!h({value:e,tabValues:u}))throw new Error(`Can't select invalid tab value=${e}`);i(e),c(e),g(e)}),[c,g,u]),tabValues:u}}var g=r(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=r(74848);function y(e){let{className:t,block:r,selectedValue:n,selectValue:a,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:l}=(0,u.a_)(),d=e=>{const t=e.currentTarget,r=i.indexOf(t),s=o[r].value;s!==n&&(l(t),a(s))},c=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const r=i.indexOf(e.currentTarget)+1;t=i[r]??i[0];break}case"ArrowLeft":{const r=i.indexOf(e.currentTarget)-1;t=i[r]??i[i.length-1];break}}t?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":r},t),children:o.map((e=>{let{value:t,label:r,attributes:u}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:n===t?0:-1,"aria-selected":n===t,ref:e=>i.push(e),onKeyDown:c,onClick:d,...u,className:(0,s.A)("tabs__item",f.tabItem,u?.className,{"tabs__item--active":n===t}),children:r??t},t)}))})}function x(e){let{lazy:t,children:r,selectedValue:s}=e;const u=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=u.find((e=>e.props.value===s));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:u.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==s})))})}function U(e){const t=p(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,v.jsx)(y,{...t,...e}),(0,v.jsx)(x,{...t,...e})]})}function j(e){const t=(0,g.A)();return(0,v.jsx)(U,{...e,children:c(e.children)},String(t))}},89236:(e,t,r)=>{r.d(t,{A:()=>u});var n=r(19365),s=(r(96540),r(74848));function u(e){return(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(n.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,r)=>{r.d(t,{A:()=>u});var n=r(11470),s=(r(96540),r(74848));function u(e){return(0,s.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,s.jsx)(n.A,{...e})})}},29404:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/get_muted_users-776736c4f580fac9b441be863741f765.png"},11446:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/mute_user-5cd9224a06f9cdb5d139d5d4b5c457ac.png"},12557:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/unmute_user-3f752651297d3df49a2a2424b0ec0db0.png"},28453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>o});var n=r(96540);const s={},u=n.createContext(s);function a(e){const t=n.useContext(u);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),n.createElement(u.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/562207a5.b60eadca.js b/Doc/assets/js/562207a5.b60eadca.js deleted file mode 100644 index 98232243..00000000 --- a/Doc/assets/js/562207a5.b60eadca.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[1991],{6046:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var n=r(74848),s=r(28453),a=r(27064),u=r(89236);const o={id:"ue-mute-user",title:"Muting and Unmuting a User",slug:"/unreal/getting-started/mute-user",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/mute-user.mdx"},i=void 0,l={id:"getting-started/ue-mute-user",title:"Muting and Unmuting a User",description:"Users have the ability to disable updates from other user\u2019s mods. This will prevent mod.io from returning mods authored by the muted user. There are three actions available to take: mute a user, unmute a user, and list muted users",source:"@site/public/en-us/getting-started/mute-user.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/mute-user",permalink:"/unreal/getting-started/mute-user",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/mute-user.mdx",tags:[],version:"current",frontMatter:{id:"ue-mute-user",title:"Muting and Unmuting a User",slug:"/unreal/getting-started/mute-user",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/mute-user.mdx"},sidebar:"sidebar",previous:{title:"Temporary Mod Sets",permalink:"/unreal/getting-started/temporary-mods"},next:{title:"Metrics Play Sessions",permalink:"/unreal/getting-started/metrics-play-sessions"}},d={},c=[{value:"Mute a user",id:"mute-a-user",level:2},{value:"Unmute a user",id:"unmute-a-user",level:2},{value:"List muted users",id:"list-muted-users",level:2}];function m(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"Users have the ability to disable updates from other user\u2019s mods. This will prevent mod.io from returning mods authored by the muted user. There are three actions available to take: mute a user, unmute a user, and list muted users"}),"\n",(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsx)(t.p,{children:"To perform any of these actions, the muting user must be authenticated."})}),"\n",(0,n.jsx)(t.h2,{id:"mute-a-user",children:"Mute a user"}),"\n",(0,n.jsxs)(t.p,{children:["To mute a user, call ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_MuteUserAsync",children:(0,n.jsx)(t.code,{children:"MuteUserAsync"})})," with the corresponding ",(0,n.jsx)(t.code,{children:"ModioUserID"})," and a callback."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(u.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"mute_user",src:r(25531).A+"",width:"690",height:"320"})})}),(0,n.jsx)(u.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"\nvoid UModioManagerSubsystem::MuteAUser(FModioUserID UserID)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->MuteUserAsync(UserID, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnMuteUserComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnMuteUserComplete(FModioErrorCode ErrorCode)\n{\n if (!ErrorCode)\n {\n \t// User successfully muted \n }\n}\n\n"})})})]}),"\n",(0,n.jsx)(t.h2,{id:"unmute-a-user",children:"Unmute a user"}),"\n",(0,n.jsxs)(t.p,{children:["To perform the inverse operation call ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_UnmuteUserAsync",children:(0,n.jsx)(t.code,{children:"UnmuteUserAsync"})})," with the corresponding ",(0,n.jsx)(t.code,{children:"ModioUserID"})," and a callback."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(u.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"unmute_user",src:r(31492).A+"",width:"673",height:"316"})})}),(0,n.jsx)(u.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"\nvoid UModioManagerSubsystem::UnmuteAUser(FModioUserID UserID)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->UnmuteUserAsync(UserID, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnUnmuteUserComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnUnmuteUserComplete(FModioErrorCode ErrorCode)\n{\n if (!ErrorCode)\n {\n \t// User successfully unmuted \n }\n}\n"})})})]}),"\n",(0,n.jsx)(t.h2,{id:"list-muted-users",children:"List muted users"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_GetMutedUsersAsync",children:(0,n.jsx)(t.code,{children:"GetMutedUsersAsync"})})," returns a list of users previously muted by an authenticated user."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(u.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"get_muted_users",src:r(35305).A+"",width:"621",height:"303"})})}),(0,n.jsx)(u.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:"\nvoid UModioManagerSubsystem::ListMutedUsers()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->GetMutedUsersAsync(FOnMuteUsersDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnListMutedUsersComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnListMutedUsersComplete(FModioErrorCode ErrorCode, FModioOptionalUserList MutedUsers)\n{\n if (!ErrorCode)\n {\n \t// List of muted users successfully retrieved \n }\n}\n\n"})})})]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(m,{...e})}):m(e)}},19365:(e,t,r)=>{r.d(t,{A:()=>u});r(96540);var n=r(18215);const s={tabItem:"tabItem_Ymn6"};var a=r(74848);function u(e){let{children:t,hidden:r,className:u}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,n.A)(s.tabItem,u),hidden:r,children:t})}},11470:(e,t,r)=>{r.d(t,{A:()=>M});var n=r(96540),s=r(18215),a=r(23104),u=r(56347),o=r(205),i=r(57485),l=r(31682),d=r(70679);function c(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:t,children:r}=e;return(0,n.useMemo)((()=>{const e=t??function(e){return c(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:s}}=e;return{value:t,label:r,attributes:n,default:s}}))}(r);return function(e){const t=(0,l.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function h(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:r}=e;const s=(0,u.W6)(),a=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,i.aZ)(a),(0,n.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(s.location.search);t.set(a,e),s.replace({...s.location,search:t.toString()})}),[a,s])]}function p(e){const{defaultValue:t,queryString:r=!1,groupId:s}=e,a=m(e),[u,i]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:a}))),[l,c]=b({queryString:r,groupId:s}),[p,g]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,a]=(0,d.Dv)(r);return[s,(0,n.useCallback)((e=>{r&&a.set(e)}),[r,a])]}({groupId:s}),f=(()=>{const e=l??p;return h({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{f&&i(f)}),[f]);return{selectedValue:u,selectValue:(0,n.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),c(e),g(e)}),[c,g,a]),tabValues:a}}var g=r(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=r(74848);function y(e){let{className:t,block:r,selectedValue:n,selectValue:u,tabValues:o}=e;const i=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),d=e=>{const t=e.currentTarget,r=i.indexOf(t),s=o[r].value;s!==n&&(l(t),u(s))},c=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const r=i.indexOf(e.currentTarget)+1;t=i[r]??i[0];break}case"ArrowLeft":{const r=i.indexOf(e.currentTarget)-1;t=i[r]??i[i.length-1];break}}t?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":r},t),children:o.map((e=>{let{value:t,label:r,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:n===t?0:-1,"aria-selected":n===t,ref:e=>i.push(e),onKeyDown:c,onClick:d,...a,className:(0,s.A)("tabs__item",f.tabItem,a?.className,{"tabs__item--active":n===t}),children:r??t},t)}))})}function x(e){let{lazy:t,children:r,selectedValue:s}=e;const a=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===s));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==s})))})}function U(e){const t=p(e);return(0,v.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,v.jsx)(y,{...t,...e}),(0,v.jsx)(x,{...t,...e})]})}function M(e){const t=(0,g.A)();return(0,v.jsx)(U,{...e,children:c(e.children)},String(t))}},89236:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(19365),s=(r(96540),r(74848));function a(e){return(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(n.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(11470),s=(r(96540),r(74848));function a(e){return(0,s.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,s.jsx)(n.A,{...e})})}},35305:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/get_muted_users-776736c4f580fac9b441be863741f765.png"},25531:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/mute_user-5cd9224a06f9cdb5d139d5d4b5c457ac.png"},31492:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/unmute_user-3f752651297d3df49a2a2424b0ec0db0.png"},28453:(e,t,r)=>{r.d(t,{R:()=>u,x:()=>o});var n=r(96540);const s={},a=n.createContext(s);function u(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:u(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/65ba71d8.3c23f95a.js b/Doc/assets/js/65ba71d8.3c23f95a.js new file mode 100644 index 00000000..a62c4a7a --- /dev/null +++ b/Doc/assets/js/65ba71d8.3c23f95a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[6783],{46770:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var i=t(74848),o=t(28453);t(27064),t(89236);const r={id:"ue-plugin-structure",title:"Plugin Structure & Concepts",slug:"/unreal/getting-started/plugin-structure/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/plugin-structure.mdx"},s=void 0,a={id:"getting-started/ue-plugin-structure",title:"Plugin Structure & Concepts",description:"ModioSubsystem",source:"@site/public/en-us/getting-started/plugin-structure.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/plugin-structure/",permalink:"/unreal/getting-started/plugin-structure/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/plugin-structure.mdx",tags:[],version:"current",frontMatter:{id:"ue-plugin-structure",title:"Plugin Structure & Concepts",slug:"/unreal/getting-started/plugin-structure/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/plugin-structure.mdx"},sidebar:"sidebar",previous:{title:"Getting Started",permalink:"/unreal/getting-started/"},next:{title:"Initialization & Teardown",permalink:"/unreal/getting-started/initialization"}},l={},d=[{value:"ModioSubsystem",id:"modiosubsystem",level:2},{value:"Value objects",id:"value-objects",level:2},{value:"UTF-8 guarantees",id:"utf-8-guarantees",level:2},{value:"Thread-safety guarantees",id:"thread-safety-guarantees",level:2},{value:"Non-blocking, asynchronous interface",id:"non-blocking-asynchronous-interface",level:2},{value:"Callback conventions",id:"callback-conventions",level:3},{value:"Maintaining the plugin event loop",id:"maintaining-the-plugin-event-loop",level:3},{value:"Error handling",id:"error-handling",level:2},{value:"User sessions",id:"user-sessions",level:2},{value:"Session IDs",id:"session-ids",level:3},{value:"Mod data directory",id:"mod-data-directory",level:2},{value:"Globally for a system account",id:"globally-for-a-system-account",level:3},{value:"Per-game for a system account",id:"per-game-for-a-system-account",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"modiosubsystem",children:(0,i.jsx)(n.code,{children:"ModioSubsystem"})}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io Unreal Engine Plugin consumes our ",(0,i.jsx)(n.a,{href:"/cppsdk/",children:"Native SDK"})," internally, and its public API is similar. The Native SDK exposes a number of free functions within the ",(0,i.jsx)(n.code,{children:"Modio"})," namespace, and this plugin wraps those functions in a ",(0,i.jsx)(n.a,{href:"https://dev.epicgames.com/documentation/en-us/unreal-engine/programming-subsystems-in-unreal-engine",children:"Subsystem"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["The lifetime of the ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#modiosubsystem",children:(0,i.jsx)(n.code,{children:"ModioSubsystem"})})," is automatically managed by the engine and provides a convenient way to access the plugin's functionality. This is broadly grouped into the following categories:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Plugin management (initialization, teardown, event loop)"}),"\n",(0,i.jsx)(n.li,{children:"User authentication"}),"\n",(0,i.jsx)(n.li,{children:"Mod browsing and querying"}),"\n",(0,i.jsx)(n.li,{children:"Mod management (subscription, unsubscription, and installation)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"value-objects",children:"Value objects"}),"\n",(0,i.jsxs)(n.p,{children:["All data returned by the plugin is presented using a small set of ",(0,i.jsx)(n.code,{children:"USTRUCTs"}),", containing information such as:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Details for mods that are available for installation"}),"\n",(0,i.jsx)(n.li,{children:"Progress information about mods being installed"}),"\n",(0,i.jsx)(n.li,{children:"Details and load paths for installed mods"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:['As structs, these are value types, so if you want to hold onto them once you\u2019ve shut down the plugin you can do so. They do not expose any methods that "talk back" to the ',(0,i.jsx)(n.code,{children:"ModioSubsystem"}),", so their methods are safe to call. This allows you, for instance, to initialize the plugin, query the installed mods, and retain that list even after shutting down the plugin and its event loop."]}),"\n",(0,i.jsx)(n.h2,{id:"utf-8-guarantees",children:"UTF-8 guarantees"}),"\n",(0,i.jsx)(n.p,{children:"The plugin uses UTF8 for all strings, as does the mod.io REST API."}),"\n",(0,i.jsx)(n.h2,{id:"thread-safety-guarantees",children:"Thread-safety guarantees"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io plugin is thread-safe with the exception of ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#run-pending-handlers",children:(0,i.jsx)(n.code,{children:"RunPendingHandlers"})}),". If you are calling ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"})," manually, you must always call it on the same thread."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["The plugin event loop, any internal event handlers, and all callbacks you provide to the mod.io plugin will be run on the thread invoking ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"}),"."]})}),"\n",(0,i.jsx)(n.h2,{id:"non-blocking-asynchronous-interface",children:"Non-blocking, asynchronous interface"}),"\n",(0,i.jsxs)(n.p,{children:["The plugin communicates with the mod.io servers, the filesystem on the device you\u2019re using, and platform-provided services for authentication. These may not return results immediately, so many functions provided by the ",(0,i.jsx)(n.code,{children:"ModioSubsystem"})," are non-blocking and asynchronous."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["All async methods in the public API end with the suffix ",(0,i.jsx)(n.code,{children:"Async"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"callback-conventions",children:"Callback conventions"}),"\n",(0,i.jsxs)(n.p,{children:["All of these asynchronous methods take a delegate as an argument, which will be invoked ",(0,i.jsx)(n.strong,{children:"exactly once"})," with the results of the requested operation. Every async callback takes a ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#modioerrorcode",children:(0,i.jsx)(n.code,{children:"ModioErrorCode"})})," as its first parameter, with any optional results wrapped in ",(0,i.jsx)(n.code,{children:"TOptional"})," so that you can easily check if a result is valid."]}),"\n",(0,i.jsxs)(n.p,{children:["Async functions should not be considered complete until their callback is invoked. For example, although ",(0,i.jsx)(n.code,{children:"InitializeAsync"})," returns immediately, you must wait for its callback (with a successful ",(0,i.jsx)(n.code,{children:"ModioErrorCode"}),") before you are able to call any other functions from the ",(0,i.jsx)(n.code,{children:"ModioSubsystem"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Any return values provided to your callback are passed-by-value; the plugin doesn\u2019t expect you to have to call ",(0,i.jsx)(n.code,{children:"release"})," or otherwise free up resources given to you."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Even if the plugin is shut down while asynchronous operations are in-flight, your delegates will still be invoked ",(0,i.jsx)(n.strong,{children:"exactly once"}),". In this instance, the ",(0,i.jsx)(n.code,{children:"ModioErrorCode"})," the delegate receives will indicate a cancellation state, and you should check for this as part of your error handling in your delegates."]})}),"\n",(0,i.jsx)(n.h3,{id:"maintaining-the-plugin-event-loop",children:"Maintaining the plugin event loop"}),"\n",(0,i.jsxs)(n.p,{children:["In order to provide a non-blocking implementation, the plugin operates an internal event loop. This event loop will only ever run on the thread which calls ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#run-pending-handlers",children:(0,i.jsx)(n.code,{children:"RunPendingHandlers"})}),". ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"})," is the function we provide to tick the internal event loop and process any pending work the plugin needs to perform."]}),"\n",(0,i.jsxs)(n.p,{children:["You should either enable the ",(0,i.jsx)(n.a,{href:"/unreal/installation-and-setup/#plugin-configuration",children:"configuration setting"})," to allow the plugin to manage a background thread which automatically calls ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"}),", or invoke it on tick in the game thread yourself."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["This means that if you stop calling ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"}),", any pending asynchronous API methods you have called will not complete and their associated callbacks will not be invoked, nor will the internal data allocated for those operations be freed."]})}),"\n",(0,i.jsx)(n.h2,{id:"error-handling",children:"Error handling"}),"\n",(0,i.jsxs)(n.p,{children:["Many of the plugin's functions utilize the ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#modioerrorcode",children:(0,i.jsx)(n.code,{children:"ModioErrorCode"})})," type. For example, all ",(0,i.jsx)(n.a,{href:"#non-blocking-asynchronous-interface",children:"async"})," functions take a ",(0,i.jsx)(n.code,{children:"ModioErrorCode"})," as the first parameter for the function's delegate. This is essentially an opaque wrapper around a numeric error code with a category and an associated string message."]}),"\n",(0,i.jsx)(n.p,{children:"The plugin doesn\u2019t attempt to predict what your error-handling logic or requirements are. Instead, we return the error code to you so you can decide what to do. For instance, if you call a function and receive an error code matching a network error condition, do you want to close down the plugin? Retry again according to custom back-off logic? That decision is left to the consuming application."}),"\n",(0,i.jsxs)(n.p,{children:["For more details on the error codes and how to inspect their values, please see our ",(0,i.jsx)(n.a,{href:"/unreal/getting-started/error-handling",children:"Error Handling quick-start guide"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"user-sessions",children:"User sessions"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io plugin runs on a per-platform-user basis. If you are using the plugin on a platform that requires user switching support, you must call ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#shutdownasync",children:(0,i.jsx)(n.code,{children:"ShutdownAsync"})})," and re-initialize the plugin by calling ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#initializeasync",children:(0,i.jsx)(n.code,{children:"InitializeAsync"})})," with a different ",(0,i.jsx)(n.a,{href:"#session-ids",children:"Session ID"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Generating a stable platform-specific Session ID for each user will ensure that an incoming user who has already authenticated with mod.io on the current device and game won\u2019t need to re-authenticate unless their authentication token has expired."}),"\n",(0,i.jsx)(n.h3,{id:"session-ids",children:"Session IDs"}),"\n",(0,i.jsx)(n.p,{children:"Session IDs are chosen by the developer. They can be whatever you like as long as they are deterministic and stable. Session IDs create a scope or a local profile for the current user to live in so that a single system can support multiple authenticated users side-by-side without requiring de-authentication of the previous user. Internally, the Session ID is used to create a folder containing the authentication information and cached profile of the authenticated user."}),"\n",(0,i.jsx)(n.p,{children:"On console platforms, we suggest that the Session ID should be a string representation of the platform-provided user ID. This gives the best experience when it comes to things like user switching. For example, a game on Xbox using a sanitized string representation of the Xbox Live ID as the Session ID would have a folder structure in persistent storage like the following:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"/mod.io///\n/mod.io///\n"})}),"\n",(0,i.jsx)(n.p,{children:"With this example, you can detect the user associated with the current controller on game start and initialize the mod.io plugin with the Session ID set to the stable string representation of that user's Xbox Live ID. As a result, the user's authentication status will be maintained from the previous session on that device."}),"\n",(0,i.jsx)(n.p,{children:"In the case of a Windows title with user-provided profile names, the same folder structure would be more like the following:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"%USERDATA%/mod.io//ProfileName1/\n%USERDATA%/mod.io//ProfileName2/\n%USERDATA%/mod.io//ProfileName3/\n"})}),"\n",(0,i.jsx)(n.p,{children:"This allows multiple players, for example siblings, to each have their own session living in the same Windows account."}),"\n",(0,i.jsx)(n.h2,{id:"mod-data-directory",children:"Mod data directory"}),"\n",(0,i.jsx)(n.p,{children:"The plugin stores mods in a game-specific directory in the following directory by default:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Windows"}),(0,i.jsx)(n.th,{children:"Linux"}),(0,i.jsx)(n.th,{children:"macOS"}),(0,i.jsx)(n.th,{children:"iOS"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"${FolderID_Public}/mod.io"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"${USER_HOME}/mod.io"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"${USER_HOME}/Library/Application Support/mod.io"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"${APP-DIRECTORY}/Documents/mod.io"})})]})})]}),"\n",(0,i.jsx)(n.p,{children:"However, this value can be overridden in one of two ways:"}),"\n",(0,i.jsx)(n.h3,{id:"globally-for-a-system-account",children:"Globally for a system account"}),"\n",(0,i.jsxs)(n.p,{children:["On first run of a game using the plugin, ",(0,i.jsx)(n.code,{children:"${FOLDERID_LocalAppData}/mod.io/globalsettings.json"})," will be created."]}),"\n",(0,i.jsxs)(n.p,{children:["This JSON object contains a ",(0,i.jsx)(n.code,{children:"RootLocalStoragePath"})," element - changing the string here to a valid path on disk will globally redirect the mod installation directory for ",(0,i.jsx)(n.strong,{children:"ALL"})," games using the mod.io Unreal Engine Plugin or Native SDK for the current system account."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"Changing this value while the SDK is initialized is not supported and behaviour is undefined."})}),"\n",(0,i.jsx)(n.h3,{id:"per-game-for-a-system-account",children:"Per-game for a system account"}),"\n",(0,i.jsxs)(n.p,{children:["Per-game settings are stored in ",(0,i.jsx)(n.code,{children:"${FOLDERID_LocalAppData}/mod.io/${GameId}/${mod.io user string}/user.json"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Adding a ",(0,i.jsx)(n.code,{children:"RootLocalStoragePath"})," element to this file will redirect the mod installation directory for this specific game only for the current system account. Removing this value will cause the game to revert back to the global value in ",(0,i.jsx)(n.code,{children:"globalsettings.json"}),"."]}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsx)(n.mdxAdmonitionTitle,{}),(0,i.jsx)(n.p,{children:"In Linux and macOS, mods and cached data binds to a single user. Other client have their own instance in their home directory."})]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},19365:(e,n,t)=>{t.d(n,{A:()=>s});t(96540);var i=t(18215);const o={tabItem:"tabItem_Ymn6"};var r=t(74848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(o.tabItem,s),hidden:t,children:n})}},11470:(e,n,t)=>{t.d(n,{A:()=>w});var i=t(96540),o=t(18215),r=t(23104),s=t(56347),a=t(205),l=t(57485),d=t(31682),c=t(70679);function u(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:i,default:o}}=e;return{value:n,label:t,attributes:i,default:o}}))}(t);return function(e){const n=(0,d.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=t.find((e=>e.default))??t[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,i.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),x=(()=>{const e=d??m;return p({value:e,tabValues:r})?e:null})();(0,a.A)((()=>{x&&l(x)}),[x]);return{selectedValue:s,selectValue:(0,i.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),f(e)}),[u,f,r]),tabValues:r}}var f=t(92303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=t(74848);function y(e){let{className:n,block:t,selectedValue:i,selectValue:s,tabValues:a}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=a[t].value;o!==i&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:a.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",x.tabItem,r?.className,{"tabs__item--active":i===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:o}=e;const r=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=r.find((e=>e.props.value===o));return e?(0,i.cloneElement)(e,{className:"margin-top--md"}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:r.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==o})))})}function j(e){const n=m(e);return(0,b.jsxs)("div",{className:(0,o.A)("tabs-container",x.tabList),children:[(0,b.jsx)(y,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function w(e){const n=(0,f.A)();return(0,b.jsx)(j,{...e,children:u(e.children)},String(n))}},89236:(e,n,t)=>{t.d(n,{A:()=>r});var i=t(19365),o=(t(96540),t(74848));function r(e){return(0,o.jsx)(o.Fragment,{children:(0,o.jsx)(i.A,{className:"tw-rounded-md",...e})})}},27064:(e,n,t)=>{t.d(n,{A:()=>r});var i=t(11470),o=(t(96540),t(74848));function r(e){return(0,o.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,o.jsx)(i.A,{...e})})}},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var i=t(96540);const o={},r=i.createContext(o);function s(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/65ba71d8.9f5de872.js b/Doc/assets/js/65ba71d8.9f5de872.js deleted file mode 100644 index 4bcb8686..00000000 --- a/Doc/assets/js/65ba71d8.9f5de872.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[6783],{46770:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var i=t(74848),o=t(28453);t(27064),t(89236);const r={id:"ue-plugin-structure",title:"Plugin Structure & Concepts",slug:"/unreal/getting-started/plugin-structure/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/plugin-structure.mdx"},s=void 0,a={id:"getting-started/ue-plugin-structure",title:"Plugin Structure & Concepts",description:"ModioSubsystem",source:"@site/public/en-us/getting-started/plugin-structure.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/plugin-structure/",permalink:"/unreal/getting-started/plugin-structure/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/plugin-structure.mdx",tags:[],version:"current",frontMatter:{id:"ue-plugin-structure",title:"Plugin Structure & Concepts",slug:"/unreal/getting-started/plugin-structure/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/plugin-structure.mdx"},sidebar:"sidebar",previous:{title:"Getting Started",permalink:"/unreal/getting-started/"},next:{title:"Initialization & Teardown",permalink:"/unreal/getting-started/initialization"}},l={},d=[{value:"ModioSubsystem",id:"modiosubsystem",level:2},{value:"Value objects",id:"value-objects",level:2},{value:"UTF-8 guarantees",id:"utf-8-guarantees",level:2},{value:"Thread-safety guarantees",id:"thread-safety-guarantees",level:2},{value:"Non-blocking, asynchronous interface",id:"non-blocking-asynchronous-interface",level:2},{value:"Callback conventions",id:"callback-conventions",level:3},{value:"Maintaining the plugin event loop",id:"maintaining-the-plugin-event-loop",level:3},{value:"Error handling",id:"error-handling",level:2},{value:"User sessions",id:"user-sessions",level:2},{value:"Session IDs",id:"session-ids",level:3},{value:"Mod data directory",id:"mod-data-directory",level:2},{value:"Globally for a system account",id:"globally-for-a-system-account",level:3},{value:"Per-game for a system account",id:"per-game-for-a-system-account",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"modiosubsystem",children:(0,i.jsx)(n.code,{children:"ModioSubsystem"})}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io Unreal Engine Plugin consumes our ",(0,i.jsx)(n.a,{href:"/cppsdk/",children:"Native SDK"})," internally, and its public API is similar. The Native SDK exposes a number of free functions within the ",(0,i.jsx)(n.code,{children:"Modio"})," namespace, and this plugin wraps those functions in a ",(0,i.jsx)(n.a,{href:"https://dev.epicgames.com/documentation/en-us/unreal-engine/programming-subsystems-in-unreal-engine",children:"Subsystem"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["The lifetime of the ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_modiosubsystem",children:(0,i.jsx)(n.code,{children:"ModioSubsystem"})})," is automatically managed by the engine and provides a convenient way to access the plugin's functionality. This is broadly grouped into the following categories:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Plugin management (initialization, teardown, event loop)"}),"\n",(0,i.jsx)(n.li,{children:"User authentication"}),"\n",(0,i.jsx)(n.li,{children:"Mod browsing and querying"}),"\n",(0,i.jsx)(n.li,{children:"Mod management (subscription, unsubscription, and installation)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"value-objects",children:"Value objects"}),"\n",(0,i.jsxs)(n.p,{children:["All data returned by the plugin is presented using a small set of ",(0,i.jsx)(n.code,{children:"USTRUCTs"}),", containing information such as:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Details for mods that are available for installation"}),"\n",(0,i.jsx)(n.li,{children:"Progress information about mods being installed"}),"\n",(0,i.jsx)(n.li,{children:"Details and load paths for installed mods"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:['As structs, these are value types, so if you want to hold onto them once you\u2019ve shut down the plugin you can do so. They do not expose any methods that "talk back" to the ',(0,i.jsx)(n.code,{children:"ModioSubsystem"}),", so their methods are safe to call. This allows you, for instance, to initialize the plugin, query the installed mods, and retain that list even after shutting down the plugin and its event loop."]}),"\n",(0,i.jsx)(n.h2,{id:"utf-8-guarantees",children:"UTF-8 guarantees"}),"\n",(0,i.jsx)(n.p,{children:"The plugin uses UTF8 for all strings, as does the mod.io REST API."}),"\n",(0,i.jsx)(n.h2,{id:"thread-safety-guarantees",children:"Thread-safety guarantees"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io plugin is thread-safe with the exception of ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#RunPendingHandlers",children:(0,i.jsx)(n.code,{children:"RunPendingHandlers"})}),". If you are calling ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"})," manually, you must always call it on the same thread."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["The plugin event loop, any internal event handlers, and all callbacks you provide to the mod.io plugin will be run on the thread invoking ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"}),"."]})}),"\n",(0,i.jsx)(n.h2,{id:"non-blocking-asynchronous-interface",children:"Non-blocking, asynchronous interface"}),"\n",(0,i.jsxs)(n.p,{children:["The plugin communicates with the mod.io servers, the filesystem on the device you\u2019re using, and platform-provided services for authentication. These may not return results immediately, so many functions provided by the ",(0,i.jsx)(n.code,{children:"ModioSubsystem"})," are non-blocking and asynchronous."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["All async methods in the public API end with the suffix ",(0,i.jsx)(n.code,{children:"Async"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"callback-conventions",children:"Callback conventions"}),"\n",(0,i.jsxs)(n.p,{children:["All of these asynchronous methods take a delegate as an argument, which will be invoked ",(0,i.jsx)(n.strong,{children:"exactly once"})," with the results of the requested operation. Every async callback takes a ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_modioerrorcode",children:(0,i.jsx)(n.code,{children:"ModioErrorCode"})})," as its first parameter, with any optional results wrapped in ",(0,i.jsx)(n.code,{children:"TOptional"})," so that you can easily check if a result is valid."]}),"\n",(0,i.jsxs)(n.p,{children:["Async functions should not be considered complete until their callback is invoked. For example, although ",(0,i.jsx)(n.code,{children:"InitializeAsync"})," returns immediately, you must wait for its callback (with a successful ",(0,i.jsx)(n.code,{children:"ModioErrorCode"}),") before you are able to call any other functions from the ",(0,i.jsx)(n.code,{children:"ModioSubsystem"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Any return values provided to your callback are passed-by-value; the plugin doesn\u2019t expect you to have to call ",(0,i.jsx)(n.code,{children:"release"})," or otherwise free up resources given to you."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Even if the plugin is shut down while asynchronous operations are in-flight, your delegates will still be invoked ",(0,i.jsx)(n.strong,{children:"exactly once"}),". In this instance, the ",(0,i.jsx)(n.code,{children:"ModioErrorCode"})," the delegate receives will indicate a cancellation state, and you should check for this as part of your error handling in your delegates."]})}),"\n",(0,i.jsx)(n.h3,{id:"maintaining-the-plugin-event-loop",children:"Maintaining the plugin event loop"}),"\n",(0,i.jsxs)(n.p,{children:["In order to provide a non-blocking implementation, the plugin operates an internal event loop. This event loop will only ever run on the thread which calls ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#RunPendingHandlers",children:(0,i.jsx)(n.code,{children:"RunPendingHandlers"})}),". ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"})," is the function we provide to tick the internal event loop and process any pending work the plugin needs to perform."]}),"\n",(0,i.jsxs)(n.p,{children:["You should either enable the ",(0,i.jsx)(n.a,{href:"/unreal/installation-and-setup/#plugin-configuration",children:"configuration setting"})," to allow the plugin to manage a background thread which automatically calls ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"}),", or invoke it on tick in the game thread yourself."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["This means that if you stop calling ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"}),", any pending asynchronous API methods you have called will not complete and their associated callbacks will not be invoked, nor will the internal data allocated for those operations be freed."]})}),"\n",(0,i.jsx)(n.h2,{id:"error-handling",children:"Error handling"}),"\n",(0,i.jsxs)(n.p,{children:["Many of the plugin's functions utilize the ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_modioerrorcode",children:(0,i.jsx)(n.code,{children:"ModioErrorCode"})})," type. For example, all ",(0,i.jsx)(n.a,{href:"#non-blocking-asynchronous-interface",children:"async"})," functions take a ",(0,i.jsx)(n.code,{children:"ModioErrorCode"})," as the first parameter for the function's delegate. This is essentially an opaque wrapper around a numeric error code with a category and an associated string message."]}),"\n",(0,i.jsx)(n.p,{children:"The plugin doesn\u2019t attempt to predict what your error-handling logic or requirements are. Instead, we return the error code to you so you can decide what to do. For instance, if you call a function and receive an error code matching a network error condition, do you want to close down the plugin? Retry again according to custom back-off logic? That decision is left to the consuming application."}),"\n",(0,i.jsxs)(n.p,{children:["For more details on the error codes and how to inspect their values, please see our ",(0,i.jsx)(n.a,{href:"/unreal/getting-started/error-handling",children:"Error Handling quick-start guide"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"user-sessions",children:"User sessions"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io plugin runs on a per-platform-user basis. If you are using the plugin on a platform that requires user switching support, you must call ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_ShutdownAsync",children:(0,i.jsx)(n.code,{children:"ShutdownAsync"})})," and re-initialize the plugin by calling ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_InitializeAsync",children:(0,i.jsx)(n.code,{children:"InitializeAsync"})})," with a different ",(0,i.jsx)(n.a,{href:"#session-ids",children:"Session ID"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Generating a stable platform-specific Session ID for each user will ensure that an incoming user who has already authenticated with mod.io on the current device and game won\u2019t need to re-authenticate unless their authentication token has expired."}),"\n",(0,i.jsx)(n.h3,{id:"session-ids",children:"Session IDs"}),"\n",(0,i.jsx)(n.p,{children:"Session IDs are chosen by the developer. They can be whatever you like as long as they are deterministic and stable. Session IDs create a scope or a local profile for the current user to live in so that a single system can support multiple authenticated users side-by-side without requiring de-authentication of the previous user. Internally, the Session ID is used to create a folder containing the authentication information and cached profile of the authenticated user."}),"\n",(0,i.jsx)(n.p,{children:"On console platforms, we suggest that the Session ID should be a string representation of the platform-provided user ID. This gives the best experience when it comes to things like user switching. For example, a game on Xbox using a sanitized string representation of the Xbox Live ID as the Session ID would have a folder structure in persistent storage like the following:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"/mod.io///\n/mod.io///\n"})}),"\n",(0,i.jsx)(n.p,{children:"With this example, you can detect the user associated with the current controller on game start and initialize the mod.io plugin with the Session ID set to the stable string representation of that user's Xbox Live ID. As a result, the user's authentication status will be maintained from the previous session on that device."}),"\n",(0,i.jsx)(n.p,{children:"In the case of a Windows title with user-provided profile names, the same folder structure would be more like the following:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"%USERDATA%/mod.io//ProfileName1/\n%USERDATA%/mod.io//ProfileName2/\n%USERDATA%/mod.io//ProfileName3/\n"})}),"\n",(0,i.jsx)(n.p,{children:"This allows multiple players, for example siblings, to each have their own session living in the same Windows account."}),"\n",(0,i.jsx)(n.h2,{id:"mod-data-directory",children:"Mod data directory"}),"\n",(0,i.jsx)(n.p,{children:"The plugin stores mods in a game-specific directory in the following directory by default:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Windows"}),(0,i.jsx)(n.th,{children:"Linux"}),(0,i.jsx)(n.th,{children:"macOS"}),(0,i.jsx)(n.th,{children:"iOS"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"${FolderID_Public}/mod.io"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"${USER_HOME}/mod.io"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"${USER_HOME}/Library/Application Support/mod.io"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"${APP-DIRECTORY}/Documents/mod.io"})})]})})]}),"\n",(0,i.jsx)(n.p,{children:"However, this value can be overridden in one of two ways:"}),"\n",(0,i.jsx)(n.h3,{id:"globally-for-a-system-account",children:"Globally for a system account"}),"\n",(0,i.jsxs)(n.p,{children:["On first run of a game using the plugin, ",(0,i.jsx)(n.code,{children:"${FOLDERID_LocalAppData}/mod.io/globalsettings.json"})," will be created."]}),"\n",(0,i.jsxs)(n.p,{children:["This JSON object contains a ",(0,i.jsx)(n.code,{children:"RootLocalStoragePath"})," element - changing the string here to a valid path on disk will globally redirect the mod installation directory for ",(0,i.jsx)(n.strong,{children:"ALL"})," games using the mod.io Unreal Engine Plugin or Native SDK for the current system account."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"Changing this value while the SDK is initialized is not supported and behaviour is undefined."})}),"\n",(0,i.jsx)(n.h3,{id:"per-game-for-a-system-account",children:"Per-game for a system account"}),"\n",(0,i.jsxs)(n.p,{children:["Per-game settings are stored in ",(0,i.jsx)(n.code,{children:"${FOLDERID_LocalAppData}/mod.io/${GameId}/${mod.io user string}/user.json"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Adding a ",(0,i.jsx)(n.code,{children:"RootLocalStoragePath"})," element to this file will redirect the mod installation directory for this specific game only for the current system account. Removing this value will cause the game to revert back to the global value in ",(0,i.jsx)(n.code,{children:"globalsettings.json"}),"."]}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsx)(n.mdxAdmonitionTitle,{}),(0,i.jsx)(n.p,{children:"In Linux and macOS, mods and cached data binds to a single user. Other client have their own instance in their home directory."})]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},19365:(e,n,t)=>{t.d(n,{A:()=>s});t(96540);var i=t(18215);const o={tabItem:"tabItem_Ymn6"};var r=t(74848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,i.A)(o.tabItem,s),hidden:t,children:n})}},11470:(e,n,t)=>{t.d(n,{A:()=>w});var i=t(96540),o=t(18215),r=t(23104),s=t(56347),a=t(205),l=t(57485),d=t(31682),c=t(70679);function u(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:i,default:o}}=e;return{value:n,label:t,attributes:i,default:o}}))}(t);return function(e){const n=(0,d.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,i.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=t.find((e=>e.default))??t[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:r}))),[d,u]=m({queryString:t,groupId:o}),[g,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,i.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),x=(()=>{const e=d??g;return p({value:e,tabValues:r})?e:null})();(0,a.A)((()=>{x&&l(x)}),[x]);return{selectedValue:s,selectValue:(0,i.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),f(e)}),[u,f,r]),tabValues:r}}var f=t(92303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=t(74848);function y(e){let{className:n,block:t,selectedValue:i,selectValue:s,tabValues:a}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=a[t].value;o!==i&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:a.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,b.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",x.tabItem,r?.className,{"tabs__item--active":i===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:o}=e;const r=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=r.find((e=>e.props.value===o));return e?(0,i.cloneElement)(e,{className:"margin-top--md"}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:r.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==o})))})}function j(e){const n=g(e);return(0,b.jsxs)("div",{className:(0,o.A)("tabs-container",x.tabList),children:[(0,b.jsx)(y,{...n,...e}),(0,b.jsx)(v,{...n,...e})]})}function w(e){const n=(0,f.A)();return(0,b.jsx)(j,{...e,children:u(e.children)},String(n))}},89236:(e,n,t)=>{t.d(n,{A:()=>r});var i=t(19365),o=(t(96540),t(74848));function r(e){return(0,o.jsx)(o.Fragment,{children:(0,o.jsx)(i.A,{className:"tw-rounded-md",...e})})}},27064:(e,n,t)=>{t.d(n,{A:()=>r});var i=t(11470),o=(t(96540),t(74848));function r(e){return(0,o.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,o.jsx)(i.A,{...e})})}},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var i=t(96540);const o={},r=i.createContext(o);function s(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/732ed63c.5c782035.js b/Doc/assets/js/732ed63c.5c782035.js deleted file mode 100644 index 46e73c00..00000000 --- a/Doc/assets/js/732ed63c.5c782035.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[1530],{20524:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>u,toc:()=>c});var n=r(74848),s=r(28453),o=r(27064),a=r(89236);const i={id:"ue-browsing-mods",title:"Browsing Mods",slug:"/unreal/getting-started/browsing-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/browsing-mods.mdx"},l=void 0,u={id:"getting-started/ue-browsing-mods",title:"Browsing Mods",description:"After initializing the plugin and authenticating a user, you can query the available mods using ListAllModsAsync.",source:"@site/public/en-us/getting-started/browsing-mods.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/browsing-mods",permalink:"/unreal/getting-started/browsing-mods",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/browsing-mods.mdx",tags:[],version:"current",frontMatter:{id:"ue-browsing-mods",title:"Browsing Mods",slug:"/unreal/getting-started/browsing-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/browsing-mods.mdx"},sidebar:"sidebar",previous:{title:"User Authentication",permalink:"/unreal/getting-started/user-authentication"},next:{title:"Mod Subscriptions & Management",permalink:"/unreal/getting-started/mod-subscriptions"}},d={},c=[];function m(e){const t={a:"a",code:"code",img:"img",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["After ",(0,n.jsx)(t.a,{href:"initialization",children:"initializing the plugin"})," and ",(0,n.jsx)(t.a,{href:"user-authentication",children:"authenticating a user"}),", you can query the available mods using ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_ListAllModsAsync",children:(0,n.jsx)(t.code,{children:"ListAllModsAsync"})}),"."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"ListAllModsAsync"})," supports filtering by name, tag, author, mature content, and more using ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#_modiofilterparams",children:(0,n.jsx)(t.code,{children:"ModioFilterParams"})}),". You can sort results as specified by ",(0,n.jsx)(t.code,{children:"ModioSortFieldType"}),", and request paginated or indexed results. By default, ",(0,n.jsx)(t.code,{children:"ModioFilterParams"})," asks for the first 100 results (the maximum number returnable in a query) sorted by ",(0,n.jsx)(t.code,{children:"ModioModID"}),"."]}),"\n",(0,n.jsxs)(o.A,{"group-id":"languages",children:[(0,n.jsxs)(a.A,{value:"blueprint",label:"Blueprint",children:[(0,n.jsxs)(t.p,{children:["The primary way this is done is through ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_ListAllModsAsync",children:"K2_ListAllModsAsync"}),"."]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"list_all_mods",src:r(91144).A+"",width:"1376",height:"582"})}),(0,n.jsxs)(t.p,{children:["To search for a specific query string, sort in a different order, or combine different filters, you can use a ",(0,n.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#_modiofilterparams",children:"ModioFilterParams"})," object like this:"]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"list_all_mods_filter",src:r(99999).A+"",width:"1387",height:"655"})})]}),(0,n.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:'void UModioManagerSubsystem::ListAllMods()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tFModioFilterParams Filter;\n \t// Build the filter by chaining together multiple calls\n \tFilter.PagedResults(1, 5).IndexedResults(3, 5).WithTags("Multiplayer").SortBy(EModioSortFieldType::ID, EModioSortDirection::Descending);\n\n \tSubsystem->ListAllModsAsync(Filter, FOnListAllModsDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnListAllModsComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnListAllModsComplete(FModioErrorCode ErrorCode, TOptional OptionalModList)\n{\n // Ensure ListAllModsAsync was successful\n if (!ErrorCode)\n {\n \t// ModList is guaranteed to be valid if there is no error\n \tTArray ModInfoArray = OptionalModList.GetValue().GetRawList();\n\n \t// Do something with ModInfoArray\n\n \t// You can use OptionalModList().GetValue().Paged related methods to make further paginated requests if required\n }\n}\n\n'})})})]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(m,{...e})}):m(e)}},19365:(e,t,r)=>{r.d(t,{A:()=>a});r(96540);var n=r(18215);const s={tabItem:"tabItem_Ymn6"};var o=r(74848);function a(e){let{children:t,hidden:r,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,n.A)(s.tabItem,a),hidden:r,children:t})}},11470:(e,t,r)=>{r.d(t,{A:()=>w});var n=r(96540),s=r(18215),o=r(23104),a=r(56347),i=r(205),l=r(57485),u=r(31682),d=r(70679);function c(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:t,children:r}=e;return(0,n.useMemo)((()=>{const e=t??function(e){return c(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:s}}=e;return{value:t,label:r,attributes:n,default:s}}))}(r);return function(e){const t=(0,u.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function h(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function g(e){let{queryString:t=!1,groupId:r}=e;const s=(0,a.W6)(),o=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,l.aZ)(o),(0,n.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(s.location.search);t.set(o,e),s.replace({...s.location,search:t.toString()})}),[o,s])]}function p(e){const{defaultValue:t,queryString:r=!1,groupId:s}=e,o=m(e),[a,l]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[u,c]=g({queryString:r,groupId:s}),[p,b]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,o]=(0,d.Dv)(r);return[s,(0,n.useCallback)((e=>{r&&o.set(e)}),[r,o])]}({groupId:s}),f=(()=>{const e=u??p;return h({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:a,selectValue:(0,n.useCallback)((e=>{if(!h({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),b(e)}),[c,b,o]),tabValues:o}}var b=r(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=r(74848);function v(e){let{className:t,block:r,selectedValue:n,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,o.a_)(),d=e=>{const t=e.currentTarget,r=l.indexOf(t),s=i[r].value;s!==n&&(u(t),a(s))},c=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const r=l.indexOf(e.currentTarget)+1;t=l[r]??l[0];break}case"ArrowLeft":{const r=l.indexOf(e.currentTarget)-1;t=l[r]??l[l.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":r},t),children:i.map((e=>{let{value:t,label:r,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:n===t?0:-1,"aria-selected":n===t,ref:e=>l.push(e),onKeyDown:c,onClick:d,...o,className:(0,s.A)("tabs__item",f.tabItem,o?.className,{"tabs__item--active":n===t}),children:r??t},t)}))})}function x(e){let{lazy:t,children:r,selectedValue:s}=e;const o=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===s));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==s})))})}function M(e){const t=p(e);return(0,y.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(x,{...t,...e})]})}function w(e){const t=(0,b.A)();return(0,y.jsx)(M,{...e,children:c(e.children)},String(t))}},89236:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(19365),s=(r(96540),r(74848));function o(e){return(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(n.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(11470),s=(r(96540),r(74848));function o(e){return(0,s.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,s.jsx)(n.A,{...e})})}},91144:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/list_all_mods-0849d8a4fb5c0a31b6942f132824ea04.png"},99999:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/list_all_mods_filter-64856fbea375ef27ca0c47169e161dfe.png"},28453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>i});var n=r(96540);const s={},o=n.createContext(s);function a(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/732ed63c.d993f088.js b/Doc/assets/js/732ed63c.d993f088.js new file mode 100644 index 00000000..115eb603 --- /dev/null +++ b/Doc/assets/js/732ed63c.d993f088.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[1530],{20524:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>u,toc:()=>c});var n=r(74848),s=r(28453),o=r(27064),a=r(89236);const i={id:"ue-browsing-mods",title:"Browsing Mods",slug:"/unreal/getting-started/browsing-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/browsing-mods.mdx"},l=void 0,u={id:"getting-started/ue-browsing-mods",title:"Browsing Mods",description:"After initializing the plugin and authenticating a user, you can query the available mods using ListAllModsAsync.",source:"@site/public/en-us/getting-started/browsing-mods.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/browsing-mods",permalink:"/unreal/getting-started/browsing-mods",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/browsing-mods.mdx",tags:[],version:"current",frontMatter:{id:"ue-browsing-mods",title:"Browsing Mods",slug:"/unreal/getting-started/browsing-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/browsing-mods.mdx"},sidebar:"sidebar",previous:{title:"User Authentication",permalink:"/unreal/getting-started/user-authentication"},next:{title:"Mod Subscriptions & Management",permalink:"/unreal/getting-started/mod-subscriptions"}},d={},c=[];function m(e){const t={a:"a",code:"code",img:"img",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["After ",(0,n.jsx)(t.a,{href:"initialization",children:"initializing the plugin"})," and ",(0,n.jsx)(t.a,{href:"user-authentication",children:"authenticating a user"}),", you can query the available mods using ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#listallmodsasync",children:(0,n.jsx)(t.code,{children:"ListAllModsAsync"})}),"."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"ListAllModsAsync"})," supports filtering by name, tag, author, mature content, and more using ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#modiofilterparams",children:(0,n.jsx)(t.code,{children:"ModioFilterParams"})}),". You can sort results as specified by ",(0,n.jsx)(t.code,{children:"ModioSortFieldType"}),", and request paginated or indexed results. By default, ",(0,n.jsx)(t.code,{children:"ModioFilterParams"})," asks for the first 100 results (the maximum number returnable in a query) sorted by ",(0,n.jsx)(t.code,{children:"ModioModID"}),"."]}),"\n",(0,n.jsxs)(o.A,{"group-id":"languages",children:[(0,n.jsxs)(a.A,{value:"blueprint",label:"Blueprint",children:[(0,n.jsxs)(t.p,{children:["The primary way this is done is through ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#listallmodsasync",children:"K2_ListAllModsAsync"}),"."]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"list_all_mods",src:r(4305).A+"",width:"1376",height:"582"})}),(0,n.jsxs)(t.p,{children:["To search for a specific query string, sort in a different order, or combine different filters, you can use a ",(0,n.jsx)(t.a,{href:"/unreal/refdocs/#modiofilterparams",children:"ModioFilterParams"})," object like this:"]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"list_all_mods_filter",src:r(10740).A+"",width:"1387",height:"655"})})]}),(0,n.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-cpp",children:'void UModioManagerSubsystem::ListAllMods()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tFModioFilterParams Filter;\n \t// Build the filter by chaining together multiple calls\n \tFilter.PagedResults(1, 5).IndexedResults(3, 5).WithTags("Multiplayer").SortBy(EModioSortFieldType::ID, EModioSortDirection::Descending);\n\n \tSubsystem->ListAllModsAsync(Filter, FOnListAllModsDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnListAllModsComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnListAllModsComplete(FModioErrorCode ErrorCode, TOptional OptionalModList)\n{\n // Ensure ListAllModsAsync was successful\n if (!ErrorCode)\n {\n \t// ModList is guaranteed to be valid if there is no error\n \tTArray ModInfoArray = OptionalModList.GetValue().GetRawList();\n\n \t// Do something with ModInfoArray\n\n \t// You can use OptionalModList().GetValue().Paged related methods to make further paginated requests if required\n }\n}\n\n'})})})]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(m,{...e})}):m(e)}},19365:(e,t,r)=>{r.d(t,{A:()=>a});r(96540);var n=r(18215);const s={tabItem:"tabItem_Ymn6"};var o=r(74848);function a(e){let{children:t,hidden:r,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,n.A)(s.tabItem,a),hidden:r,children:t})}},11470:(e,t,r)=>{r.d(t,{A:()=>M});var n=r(96540),s=r(18215),o=r(23104),a=r(56347),i=r(205),l=r(57485),u=r(31682),d=r(70679);function c(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:t,children:r}=e;return(0,n.useMemo)((()=>{const e=t??function(e){return c(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:s}}=e;return{value:t,label:r,attributes:n,default:s}}))}(r);return function(e){const t=(0,u.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function h(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function g(e){let{queryString:t=!1,groupId:r}=e;const s=(0,a.W6)(),o=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,l.aZ)(o),(0,n.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(s.location.search);t.set(o,e),s.replace({...s.location,search:t.toString()})}),[o,s])]}function b(e){const{defaultValue:t,queryString:r=!1,groupId:s}=e,o=m(e),[a,l]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[u,c]=g({queryString:r,groupId:s}),[b,f]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,o]=(0,d.Dv)(r);return[s,(0,n.useCallback)((e=>{r&&o.set(e)}),[r,o])]}({groupId:s}),p=(()=>{const e=u??b;return h({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{p&&l(p)}),[p]);return{selectedValue:a,selectValue:(0,n.useCallback)((e=>{if(!h({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),f(e)}),[c,f,o]),tabValues:o}}var f=r(92303);const p={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=r(74848);function v(e){let{className:t,block:r,selectedValue:n,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,o.a_)(),d=e=>{const t=e.currentTarget,r=l.indexOf(t),s=i[r].value;s!==n&&(u(t),a(s))},c=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const r=l.indexOf(e.currentTarget)+1;t=l[r]??l[0];break}case"ArrowLeft":{const r=l.indexOf(e.currentTarget)-1;t=l[r]??l[l.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":r},t),children:i.map((e=>{let{value:t,label:r,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:n===t?0:-1,"aria-selected":n===t,ref:e=>l.push(e),onKeyDown:c,onClick:d,...o,className:(0,s.A)("tabs__item",p.tabItem,o?.className,{"tabs__item--active":n===t}),children:r??t},t)}))})}function x(e){let{lazy:t,children:r,selectedValue:s}=e;const o=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===s));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==s})))})}function w(e){const t=b(e);return(0,y.jsxs)("div",{className:(0,s.A)("tabs-container",p.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(x,{...t,...e})]})}function M(e){const t=(0,f.A)();return(0,y.jsx)(w,{...e,children:c(e.children)},String(t))}},89236:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(19365),s=(r(96540),r(74848));function o(e){return(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(n.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(11470),s=(r(96540),r(74848));function o(e){return(0,s.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,s.jsx)(n.A,{...e})})}},4305:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/list_all_mods-0849d8a4fb5c0a31b6942f132824ea04.png"},10740:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/list_all_mods_filter-64856fbea375ef27ca0c47169e161dfe.png"},28453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>i});var n=r(96540);const s={},o=n.createContext(s);function a(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/8ac087ef.27a161e3.js b/Doc/assets/js/8ac087ef.27a161e3.js deleted file mode 100644 index 0d38f7d2..00000000 --- a/Doc/assets/js/8ac087ef.27a161e3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[1493],{8822:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>a,frontMatter:()=>o,metadata:()=>r,toc:()=>t});var i=s(74848),l=s(28453);const o={id:"ue-asset-support-for-mods",title:"Asset Support for Mods",slug:"/unreal/asset-support-for-mods/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/asset-support-for-mods"},d=void 0,r={id:"ue-asset-support-for-mods",title:"Asset Support for Mods",description:"Overview",source:"@site/public/en-us/asset-support-for-mods.mdx",sourceDirName:".",slug:"/unreal/asset-support-for-mods/",permalink:"/unreal/asset-support-for-mods/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/asset-support-for-mods",tags:[],version:"current",frontMatter:{id:"ue-asset-support-for-mods",title:"Asset Support for Mods",slug:"/unreal/asset-support-for-mods/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/asset-support-for-mods"},sidebar:"sidebar",previous:{title:"Marketplace",permalink:"/unreal/marketplace/"},next:{title:"Profiling",permalink:"/unreal/profiling/"}},c={},t=[{value:"Overview",id:"overview",level:2},{value:"Supported Asset Types",id:"supported-asset-types",level:2},{value:"Allowed Actors In Levels",id:"allowed-actors-in-levels",level:3},{value:"Allowed Components in Actors",id:"allowed-components-in-actors",level:3},{value:"Unsupported Asset Types",id:"unsupported-asset-types",level:2},{value:"Prohibited Actors in Levels",id:"prohibited-actors-in-levels",level:3},{value:"Prohibited Components in Actors",id:"prohibited-components-in-actors",level:3},{value:"Asset Support in Packages (UPackage)",id:"asset-support-in-packages-upackage",level:2}];function h(e){const n={code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",ul:"ul",...(0,l.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,i.jsx)(n.p,{children:"The main factor for supporting assets is dependency: only dependencies to the project's content are allowed, but not engine's dependency. When trying to package any asset that has engine dependency, it will fail."}),"\n",(0,i.jsxs)(n.p,{children:["Some assets have internal dependencies which can't be bypassed without modifying the engine's source code. For example, when trying to create a directional light or point light in the level, you'll have an ",(0,i.jsx)(n.code,{children:"EmptyActor"})," dependency to the engine - packaging of that asset and consequently the whole mod will fail. Therefore, you should generally avoid using any engine's assets dependency (except for very basic ones, such as dependency to ",(0,i.jsx)(n.code,{children:"AActor"})," class), and instead create your own classes in your project and implement the necessary functionality there, and allow the mod to use those classes instead of the engine's ones."]}),"\n",(0,i.jsx)(n.h2,{id:"supported-asset-types",children:"Supported Asset Types"}),"\n",(0,i.jsx)(n.h3,{id:"allowed-actors-in-levels",children:"Allowed Actors In Levels"}),"\n",(0,i.jsx)(n.p,{children:"These actors, including custom actors derived from them and saved in the project or mod, can be placed in levels without causing packaging issues in the mod:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AStaticMeshActor"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"APlayerStart"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"APawn"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ACharacter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ADefaultPawn"})}),"\n",(0,i.jsx)(n.li,{children:"All other derived actors"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ABrush"})," & ",(0,i.jsx)(n.code,{children:"AVolume"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AKillZVolume"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ABlockingVolume"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AAudioVolume"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ACullDistanceVolume"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"APostProcessVolume"})}),"\n",(0,i.jsx)(n.li,{children:"All other derived actors"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ADecalActor"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"AInfo"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AVolumetricCloud"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AExponentialHeightFog"})}),"\n",(0,i.jsx)(n.li,{children:"Other supported derived actors"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ATriggerBase"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ATriggerBox"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ATriggerCapsule"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ATriggerSphere"})}),"\n",(0,i.jsx)(n.li,{children:"All other derived actors"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"allowed-components-in-actors",children:"Allowed Components in Actors"}),"\n",(0,i.jsx)(n.p,{children:"These components, including custom components derived from them and saved in the project or mod, can be placed in actors without causing packaging issues in the mod:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"USceneComponent"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"UPrimitiveComponent"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UTextRenderComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UArrowComponent"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"UShapeComponent"})," (collisions)","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UBoxComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UCapsuleComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"USphereComponent"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"UMeshComponent"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UStaticMeshComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UWidgetComponent"})}),"\n",(0,i.jsx)(n.li,{children:"All other derived components"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UCameraComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UChildActorComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UText3DComponent"})}),"\n",(0,i.jsx)(n.li,{children:"Other supported derived components"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UWidgetComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UCameraComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UDecalComponent"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"UMovementComponent"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UPawnMovementComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UCharacterMovementComponent"})}),"\n",(0,i.jsx)(n.li,{children:"All other derived components"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"All other derived components"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"unsupported-asset-types",children:"Unsupported Asset Types"}),"\n",(0,i.jsx)(n.h3,{id:"prohibited-actors-in-levels",children:"Prohibited Actors in Levels"}),"\n",(0,i.jsx)(n.p,{children:"These actors, including custom actors derived from them and saved in the project or mod, should not be placed in levels as they will likely cause packaging issues in the mod:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ALight"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ADirectionalLight"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"APointLight"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ARectLight"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ASpotLight"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"AInfo"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ASkyLight"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ASkyAtmosphere"})}),"\n",(0,i.jsx)(n.li,{children:"Other unsupported derived actors"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ASkyAtmosphere"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ATextRenderActor"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Other unsupported derived actors"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"prohibited-components-in-actors",children:"Prohibited Components in Actors"}),"\n",(0,i.jsx)(n.p,{children:"These components, including custom components derived from them and saved in the project or mod, should not be placed in actors as they will likely cause packaging issues in the mod:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"USceneComponent"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ULightComponentBase"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UDirectionalLightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ULightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ULocalLightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UPointLightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"URectLightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"USkyLightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"USpotLightComponent"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"USynthComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UAudioComponent"})}),"\n",(0,i.jsx)(n.li,{children:"Other unsupported derived components"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"asset-support-in-packages-upackage",children:"Asset Support in Packages (UPackage)"}),"\n",(0,i.jsx)(n.p,{children:"Generally, all possible asset types are supported to be included in the plugin after the packaging. The tested ones are listed below, but any other assets without dependency on the engine are supported as well, such as manually created ones in the mod itself:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Actor"}),"\n",(0,i.jsx)(n.li,{children:"Pawn"}),"\n",(0,i.jsx)(n.li,{children:"Character"}),"\n",(0,i.jsx)(n.li,{children:"Actor Component"}),"\n",(0,i.jsx)(n.li,{children:"Scene Component"}),"\n",(0,i.jsx)(n.li,{children:"Level"}),"\n",(0,i.jsx)(n.li,{children:"Material"}),"\n",(0,i.jsx)(n.li,{children:"Widget"}),"\n",(0,i.jsx)(n.li,{children:"Texture"}),"\n",(0,i.jsx)(n.li,{children:"Sound Wave"}),"\n",(0,i.jsx)(n.li,{children:"Static Mesh"}),"\n",(0,i.jsx)(n.li,{children:"Skeletal Mesh"}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var i=s(96540);const l={},o=i.createContext(l);function d(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:d(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/8ac087ef.4e5b794d.js b/Doc/assets/js/8ac087ef.4e5b794d.js new file mode 100644 index 00000000..ad043293 --- /dev/null +++ b/Doc/assets/js/8ac087ef.4e5b794d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[1493],{8822:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>a,frontMatter:()=>l,metadata:()=>r,toc:()=>t});var i=s(74848),o=s(28453);const l={id:"ue-asset-support-for-mods",title:"Asset Support for Mods",slug:"/unreal/asset-support-for-mods/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/asset-support-for-mods"},d=void 0,r={id:"ue-asset-support-for-mods",title:"Asset Support for Mods",description:"Overview",source:"@site/public/en-us/asset-support-for-mods.mdx",sourceDirName:".",slug:"/unreal/asset-support-for-mods/",permalink:"/unreal/asset-support-for-mods/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/asset-support-for-mods",tags:[],version:"current",frontMatter:{id:"ue-asset-support-for-mods",title:"Asset Support for Mods",slug:"/unreal/asset-support-for-mods/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/asset-support-for-mods"},sidebar:"sidebar",previous:{title:"Marketplace",permalink:"/unreal/marketplace/"},next:{title:"Profiling",permalink:"/unreal/profiling/"}},c={},t=[{value:"Overview",id:"overview",level:2},{value:"Supported Asset Types",id:"supported-asset-types",level:2},{value:"Allowed Actors In Levels",id:"allowed-actors-in-levels",level:3},{value:"Allowed Components in Actors",id:"allowed-components-in-actors",level:3},{value:"Unsupported Asset Types",id:"unsupported-asset-types",level:2},{value:"Prohibited Actors in Levels",id:"prohibited-actors-in-levels",level:3},{value:"Prohibited Components in Actors",id:"prohibited-components-in-actors",level:3},{value:"Asset Support in Packages (UPackage)",id:"asset-support-in-packages-upackage",level:2}];function h(e){const n={code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,i.jsx)(n.p,{children:"The main factor for supporting assets is dependency: only dependencies to the project's content are allowed, but not engine's dependency. When trying to package any asset that has engine dependency, it will fail."}),"\n",(0,i.jsxs)(n.p,{children:["Some assets have internal dependencies which can't be bypassed without modifying the engine's source code. For example, when trying to create a directional light or point light in the level, you'll have an ",(0,i.jsx)(n.code,{children:"EmptyActor"})," dependency to the engine - packaging of that asset and consequently the whole mod will fail. Therefore, you should generally avoid using any engine's assets dependency (except for very basic ones, such as dependency to ",(0,i.jsx)(n.code,{children:"AActor"})," class), and instead create your own classes in your project and implement the necessary functionality there, and allow the mod to use those classes instead of the engine's ones."]}),"\n",(0,i.jsx)(n.h2,{id:"supported-asset-types",children:"Supported Asset Types"}),"\n",(0,i.jsx)(n.h3,{id:"allowed-actors-in-levels",children:"Allowed Actors In Levels"}),"\n",(0,i.jsx)(n.p,{children:"These actors, including custom actors derived from them and saved in the project or mod, can be placed in levels without causing packaging issues in the mod:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AStaticMeshActor"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"APlayerStart"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"APawn"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ACharacter"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ADefaultPawn"})}),"\n",(0,i.jsx)(n.li,{children:"All other derived actors"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ABrush"})," & ",(0,i.jsx)(n.code,{children:"AVolume"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AKillZVolume"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ABlockingVolume"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AAudioVolume"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ACullDistanceVolume"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"APostProcessVolume"})}),"\n",(0,i.jsx)(n.li,{children:"All other derived actors"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ADecalActor"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"AInfo"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AVolumetricCloud"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"AExponentialHeightFog"})}),"\n",(0,i.jsx)(n.li,{children:"Other supported derived actors"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ATriggerBase"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ATriggerBox"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ATriggerCapsule"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ATriggerSphere"})}),"\n",(0,i.jsx)(n.li,{children:"All other derived actors"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"allowed-components-in-actors",children:"Allowed Components in Actors"}),"\n",(0,i.jsx)(n.p,{children:"These components, including custom components derived from them and saved in the project or mod, can be placed in actors without causing packaging issues in the mod:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"USceneComponent"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"UPrimitiveComponent"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UTextRenderComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UArrowComponent"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"UShapeComponent"})," (collisions)","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UBoxComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UCapsuleComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"USphereComponent"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"UMeshComponent"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UStaticMeshComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UWidgetComponent"})}),"\n",(0,i.jsx)(n.li,{children:"All other derived components"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UCameraComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UChildActorComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UText3DComponent"})}),"\n",(0,i.jsx)(n.li,{children:"Other supported derived components"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UWidgetComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UCameraComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UDecalComponent"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"UMovementComponent"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UPawnMovementComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UCharacterMovementComponent"})}),"\n",(0,i.jsx)(n.li,{children:"All other derived components"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"All other derived components"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"unsupported-asset-types",children:"Unsupported Asset Types"}),"\n",(0,i.jsx)(n.h3,{id:"prohibited-actors-in-levels",children:"Prohibited Actors in Levels"}),"\n",(0,i.jsx)(n.p,{children:"These actors, including custom actors derived from them and saved in the project or mod, should not be placed in levels as they will likely cause packaging issues in the mod:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ALight"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ADirectionalLight"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"APointLight"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ARectLight"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ASpotLight"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"AInfo"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ASkyLight"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ASkyAtmosphere"})}),"\n",(0,i.jsx)(n.li,{children:"Other unsupported derived actors"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ASkyAtmosphere"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ATextRenderActor"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Other unsupported derived actors"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"prohibited-components-in-actors",children:"Prohibited Components in Actors"}),"\n",(0,i.jsx)(n.p,{children:"These components, including custom components derived from them and saved in the project or mod, should not be placed in actors as they will likely cause packaging issues in the mod:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"USceneComponent"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ULightComponentBase"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UDirectionalLightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ULightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ULocalLightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UPointLightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"URectLightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"USkyLightComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"USpotLightComponent"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"USynthComponent"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"UAudioComponent"})}),"\n",(0,i.jsx)(n.li,{children:"Other unsupported derived components"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"asset-support-in-packages-upackage",children:"Asset Support in Packages (UPackage)"}),"\n",(0,i.jsx)(n.p,{children:"Generally, all possible asset types are supported to be included in the plugin after the packaging. The tested ones are listed below, but any other assets without dependency on the engine are supported as well, such as manually created ones in the mod itself:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Actor"}),"\n",(0,i.jsx)(n.li,{children:"Pawn"}),"\n",(0,i.jsx)(n.li,{children:"Character"}),"\n",(0,i.jsx)(n.li,{children:"Actor Component"}),"\n",(0,i.jsx)(n.li,{children:"Scene Component"}),"\n",(0,i.jsx)(n.li,{children:"Level"}),"\n",(0,i.jsx)(n.li,{children:"Material"}),"\n",(0,i.jsx)(n.li,{children:"Widget"}),"\n",(0,i.jsx)(n.li,{children:"Texture"}),"\n",(0,i.jsx)(n.li,{children:"Sound Wave"}),"\n",(0,i.jsx)(n.li,{children:"Static Mesh"}),"\n",(0,i.jsx)(n.li,{children:"Skeletal Mesh"}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>r});var i=s(96540);const o={},l=i.createContext(o);function d(e){const n=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),i.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/8f59627d.be8524c0.js b/Doc/assets/js/8f59627d.be8524c0.js new file mode 100644 index 00000000..6ddc5d96 --- /dev/null +++ b/Doc/assets/js/8f59627d.be8524c0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[3586],{47723:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>l,default:()=>g,frontMatter:()=>s,metadata:()=>d,toc:()=>c});var i=t(74848),r=t(28453),a=t(27064),o=t(89236);const s={id:"ue-initialization",title:"Initialization & Teardown",slug:"/unreal/getting-started/initialization",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/initialization.mdx"},l=void 0,d={id:"getting-started/ue-initialization",title:"Initialization & Teardown",description:"Best practices",source:"@site/public/en-us/getting-started/initialization.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/initialization",permalink:"/unreal/getting-started/initialization",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/initialization.mdx",tags:[],version:"current",frontMatter:{id:"ue-initialization",title:"Initialization & Teardown",slug:"/unreal/getting-started/initialization",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/initialization.mdx"},sidebar:"sidebar",previous:{title:"Plugin Structure & Concepts",permalink:"/unreal/getting-started/plugin-structure/"},next:{title:"User Authentication",permalink:"/unreal/getting-started/user-authentication"}},u={},c=[{value:"Best practices",id:"best-practices",level:2},{value:"Calling RunPendingHandlers",id:"calling-runpendinghandlers",level:2},{value:"Initialization",id:"initialization",level:2},{value:"Shutdown",id:"shutdown",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"best-practices",children:"Best practices"}),"\n",(0,i.jsxs)(n.p,{children:["This guide describes the mod.io Unreal Engine plugin's basic event loop, intialization, and shutdown functions. Ideally, you should wrap these functions in a separate subsystem (e.g. ",(0,i.jsx)(n.code,{children:"ModioManagerSubsystem"}),") which is responsible for managing the full initialization and authentication flow for your game."]}),"\n",(0,i.jsxs)(n.p,{children:["For more information, see our ",(0,i.jsx)(n.a,{href:"user-authentication",children:"User Authentication"})," quick-start guide."]}),"\n",(0,i.jsx)(n.h2,{id:"calling-runpendinghandlers",children:"Calling RunPendingHandlers"}),"\n",(0,i.jsxs)(n.p,{children:["Before initializing the plugin, ensure ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#run-pending-handlers",children:(0,i.jsx)(n.code,{children:"RunPendingHandlers"})})," is being continually called. You can do this yourself in your project\u2019s main loop, or by setting ",(0,i.jsx)(n.a,{href:"/unreal/installation-and-setup/#using-a-background-thread",children:(0,i.jsx)(n.code,{children:"Use Background Thread"})})," to true in the mod.io project settings. For best performance, ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"})," should be called at least once per frame. See ",(0,i.jsx)(n.a,{href:"/unreal/getting-started/plugin-structure/#maintaining-the-plugin-event-loop",children:"Maintaining the plugin event loop"})," for additional information."]}),"\n",(0,i.jsx)(n.h2,{id:"initialization",children:"Initialization"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io Unreal Engine plugin is initialized by calling ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#initializeasync",children:(0,i.jsx)(n.code,{children:"InitializeAsync"})}),", passing in a ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#modioinitializeoptions",children:(0,i.jsx)(n.code,{children:"ModioInitializeOptions"})})," with the relevant information for the current session, and a callback containing a ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#modioerrorcode",children:(0,i.jsx)(n.code,{children:"ModioErrorCode"})})," that will contain the result of the initialization on completion."]}),"\n",(0,i.jsxs)(n.p,{children:["Use ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#get-project-initialize-options-for-session-id",children:(0,i.jsx)(n.code,{children:"GetProjectInitializeOptionsForSessionId"})})," to initialize the plugin using the information entered in the ",(0,i.jsx)(n.a,{href:"/unreal/installation-and-setup/#plugin-configuration",children:"mod.io project settings"}),". On Windows, ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#get-default-session-id-windows",children:(0,i.jsx)(n.code,{children:"GetDefaultSessionIdWindows"})})," can be used as the ",(0,i.jsx)(n.a,{href:"/unreal/getting-started/plugin-structure/#session-ids",children:"Session ID"}),". Some platforms also require additional parameters added to ",(0,i.jsx)(n.code,{children:"ModioInitializeOptions.ExtendedInitializationParameters"}),". Refer to the relevant ",(0,i.jsx)(n.a,{href:"/platforms/",children:"platform documentation"})," for more information."]}),"\n",(0,i.jsxs)(a.A,{groupId:"languages",children:[(0,i.jsx)(o.A,{value:"cpp",label:"C++",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::Init()\n{\t\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->InitializeAsync(UModioSDKLibrary::GetProjectInitializeOptionsForSessionId(UModioSDKLibrary::GetDefaultSessionIdWindows()), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnInitCallback));\n }\n UE_LOG(LogModioGame, Log, TEXT("Initializing mod.io"));\n}\n\nvoid UModioManagerSubsystem::OnInitCallback(FModioErrorCode ErrorCode)\n{\n UE_LOG(LogModioGame, Log, TEXT("mod.io initialization complete with result: %s"), *ErrorCode.GetErrorMessage());\n}\n\nvoid UModioManagerSubsystem::Tick(float DeltaTime)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->RunPendingHandlers();\n }\n}\n'})})}),(0,i.jsxs)(o.A,{value:"blueprint",label:"Blueprint",children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"run_pending_handlers",src:t(82236).A+"",width:"689",height:"312"})}),(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"initasync_getoptions",src:t(65910).A+"",width:"1327",height:"556"})})]})]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The error-handling in this sample has been omitted. See our ",(0,i.jsx)(n.a,{href:"error-handling",children:(0,i.jsx)(n.strong,{children:"Error Handling quick-start guide"})})," for more information."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"InitializeAsync"})," is a asynchronous function, therefore you ",(0,i.jsx)(n.em,{children:"must"})," wait for the callback for confirmation that the initialization is complete."]}),"\n"]})}),"\n",(0,i.jsx)(n.h2,{id:"shutdown",children:"Shutdown"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io Unreal Engine plugin is shut down by calling ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#shutdownasync",children:(0,i.jsx)(n.code,{children:"ShutdownAsync"})})," in a similar fashion."]}),"\n",(0,i.jsxs)(a.A,{groupId:"languages",children:[(0,i.jsx)(o.A,{value:"cpp",label:"C++",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::Shutdown()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->ShutdownAsync(FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnShutdownComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnShutdownComplete(FModioErrorCode ErrorCode)\n{\n UE_LOG(LogModioGame, Log, TEXT("Shutdown complete with result: %s"), *ErrorCode.GetErrorMessage());\n}\n'})})}),(0,i.jsx)(o.A,{value:"blueprint",label:"Blueprint",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"shutdownasync_runhandlers",src:t(2762).A+"",width:"996",height:"662"})})})]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["You ",(0,i.jsx)(n.em,{children:"must"})," continue to call ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#run-pending-handlers",children:(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.code,{children:"RunPendingHandlers"})})})," while shutdown is in progress to allow intermediate handlers to complete."]}),"\n",(0,i.jsx)(n.li,{children:"Any in-flight mod.io async calls will complete with an error code indicating cancellation."}),"\n",(0,i.jsxs)(n.li,{children:["You ",(0,i.jsx)(n.em,{children:"must not"})," call ",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.code,{children:"ShutdownAsync"})})," from within another completion handler/callback. This may cause the application to deadlock."]}),"\n"]})})]})}function g(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},19365:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var i=t(18215);const r={tabItem:"tabItem_Ymn6"};var a=t(74848);function o(e){let{children:n,hidden:t,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,i.A)(r.tabItem,o),hidden:t,children:n})}},11470:(e,n,t)=>{t.d(n,{A:()=>w});var i=t(96540),r=t(18215),a=t(23104),o=t(56347),s=t(205),l=t(57485),d=t(31682),u=t(70679);function c(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return c(e).map((e=>{let{props:{value:n,label:t,attributes:i,default:r}}=e;return{value:n,label:t,attributes:i,default:r}}))}(t);return function(e){const n=(0,d.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function g(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const r=(0,o.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(a),(0,i.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(r.location.search);n.set(a,e),r.replace({...r.location,search:n.toString()})}),[a,r])]}function p(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,a=h(e),[o,l]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!g({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=t.find((e=>e.default))??t[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:a}))),[d,c]=m({queryString:t,groupId:r}),[p,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,a]=(0,u.Dv)(t);return[r,(0,i.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:r}),b=(()=>{const e=d??p;return g({value:e,tabValues:a})?e:null})();(0,s.A)((()=>{b&&l(b)}),[b]);return{selectedValue:o,selectValue:(0,i.useCallback)((e=>{if(!g({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),f(e)}),[c,f,a]),tabValues:a}}var f=t(92303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(74848);function j(e){let{className:n,block:t,selectedValue:i,selectValue:o,tabValues:s}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),u=e=>{const n=e.currentTarget,t=l.indexOf(n),r=s[t].value;r!==i&&(d(n),o(r))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},n),children:s.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>l.push(e),onKeyDown:c,onClick:u,...a,className:(0,r.A)("tabs__item",b.tabItem,a?.className,{"tabs__item--active":i===n}),children:t??n},n)}))})}function y(e){let{lazy:n,children:t,selectedValue:r}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:"margin-top--md"}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=p(e);return(0,x.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,x.jsx)(j,{...n,...e}),(0,x.jsx)(y,{...n,...e})]})}function w(e){const n=(0,f.A)();return(0,x.jsx)(v,{...e,children:c(e.children)},String(n))}},89236:(e,n,t)=>{t.d(n,{A:()=>a});var i=t(19365),r=(t(96540),t(74848));function a(e){return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(i.A,{className:"tw-rounded-md",...e})})}},27064:(e,n,t)=>{t.d(n,{A:()=>a});var i=t(11470),r=(t(96540),t(74848));function a(e){return(0,r.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,r.jsx)(i.A,{...e})})}},65910:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/initasync_getoptions-297e9d77d325d1bc7ab215940cd91c36.png"},82236:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/run_pending_handlers-3e2c3e1b54ee420c6d94eaf542368454.png"},2762:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/shutdownasync_runhandlers-c2e93330aca93ab1f70644e5fe625841.png"},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>s});var i=t(96540);const r={},a=i.createContext(r);function o(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/8f59627d.f96d3965.js b/Doc/assets/js/8f59627d.f96d3965.js deleted file mode 100644 index d7149cb5..00000000 --- a/Doc/assets/js/8f59627d.f96d3965.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[3586],{47723:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>s,metadata:()=>d,toc:()=>c});var i=t(74848),r=t(28453),o=t(27064),a=t(89236);const s={id:"ue-initialization",title:"Initialization & Teardown",slug:"/unreal/getting-started/initialization",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/initialization.mdx"},l=void 0,d={id:"getting-started/ue-initialization",title:"Initialization & Teardown",description:"Best practices",source:"@site/public/en-us/getting-started/initialization.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/initialization",permalink:"/unreal/getting-started/initialization",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/initialization.mdx",tags:[],version:"current",frontMatter:{id:"ue-initialization",title:"Initialization & Teardown",slug:"/unreal/getting-started/initialization",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/initialization.mdx"},sidebar:"sidebar",previous:{title:"Plugin Structure & Concepts",permalink:"/unreal/getting-started/plugin-structure/"},next:{title:"User Authentication",permalink:"/unreal/getting-started/user-authentication"}},u={},c=[{value:"Best practices",id:"best-practices",level:2},{value:"Calling RunPendingHandlers",id:"calling-runpendinghandlers",level:2},{value:"Initialization",id:"initialization",level:2},{value:"Shutdown",id:"shutdown",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"best-practices",children:"Best practices"}),"\n",(0,i.jsxs)(n.p,{children:["This guide describes the mod.io Unreal Engine plugin's basic event loop, intialization, and shutdown functions. Ideally, you should wrap these functions in a separate subsystem (e.g. ",(0,i.jsx)(n.code,{children:"ModioManagerSubsystem"}),") which is responsible for managing the full initialization and authentication flow for your game."]}),"\n",(0,i.jsxs)(n.p,{children:["For more information, see our ",(0,i.jsx)(n.a,{href:"user-authentication",children:"User Authentication"})," quick-start guide."]}),"\n",(0,i.jsx)(n.h2,{id:"calling-runpendinghandlers",children:"Calling RunPendingHandlers"}),"\n",(0,i.jsxs)(n.p,{children:["Before initializing the plugin, ensure ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#RunPendingHandlers",children:(0,i.jsx)(n.code,{children:"RunPendingHandlers"})})," is being continually called. You can do this yourself in your project\u2019s main loop, or by setting ",(0,i.jsx)(n.a,{href:"/unreal/installation-and-setup/#using-a-background-thread",children:(0,i.jsx)(n.code,{children:"Use Background Thread"})})," to true in the mod.io project settings. For best performance, ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"})," should be called at least once per frame. See ",(0,i.jsx)(n.a,{href:"/unreal/getting-started/plugin-structure/#maintaining-the-plugin-event-loop",children:"Maintaining the plugin event loop"})," for additional information."]}),"\n",(0,i.jsx)(n.h2,{id:"initialization",children:"Initialization"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io Unreal Engine plugin is initialized by calling ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_InitializeAsync",children:(0,i.jsx)(n.code,{children:"InitializeAsync"})}),", passing in a ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_modioinitializeoptions",children:(0,i.jsx)(n.code,{children:"ModioInitializeOptions"})})," with the relevant information for the current session, and a callback containing a ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_modioerrorcode",children:(0,i.jsx)(n.code,{children:"ModioErrorCode"})})," that will contain the result of the initialization on completion."]}),"\n",(0,i.jsxs)(n.p,{children:["Use ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#GetProjectInitializeOptionsForSessionId",children:(0,i.jsx)(n.code,{children:"GetProjectInitializeOptionsForSessionId"})})," to initialize the plugin using the information entered in the ",(0,i.jsx)(n.a,{href:"/unreal/installation-and-setup/#plugin-configuration",children:"mod.io project settings"}),". On Windows, ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#GetDefaultSessionIdWindows",children:(0,i.jsx)(n.code,{children:"GetDefaultSessionIdWindows"})})," can be used as the ",(0,i.jsx)(n.a,{href:"/unreal/getting-started/plugin-structure/#session-ids",children:"Session ID"}),". Some platforms also require additional parameters added to ",(0,i.jsx)(n.code,{children:"ModioInitializeOptions.ExtendedInitializationParameters"}),". Refer to the relevant ",(0,i.jsx)(n.a,{href:"/platforms/",children:"platform documentation"})," for more information."]}),"\n",(0,i.jsxs)(o.A,{groupId:"languages",children:[(0,i.jsx)(a.A,{value:"cpp",label:"C++",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::Init()\n{\t\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->InitializeAsync(UModioSDKLibrary::GetProjectInitializeOptionsForSessionId(UModioSDKLibrary::GetDefaultSessionIdWindows()), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnInitCallback));\n }\n UE_LOG(LogModioGame, Log, TEXT("Initializing mod.io"));\n}\n\nvoid UModioManagerSubsystem::OnInitCallback(FModioErrorCode ErrorCode)\n{\n UE_LOG(LogModioGame, Log, TEXT("mod.io initialization complete with result: %s"), *ErrorCode.GetErrorMessage());\n}\n\nvoid UModioManagerSubsystem::Tick(float DeltaTime)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->RunPendingHandlers();\n }\n}\n'})})}),(0,i.jsxs)(a.A,{value:"blueprint",label:"Blueprint",children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"run_pending_handlers",src:t(43711).A+"",width:"689",height:"312"})}),(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"initasync_getoptions",src:t(91169).A+"",width:"1327",height:"556"})})]})]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The error-handling in this sample has been omitted. See our ",(0,i.jsx)(n.a,{href:"error-handling",children:(0,i.jsx)(n.strong,{children:"Error Handling quick-start guide"})})," for more information."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"InitializeAsync"})," is a asynchronous function, therefore you ",(0,i.jsx)(n.em,{children:"must"})," wait for the callback for confirmation that the initialization is complete."]}),"\n"]})}),"\n",(0,i.jsx)(n.h2,{id:"shutdown",children:"Shutdown"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io Unreal Engine plugin is shut down by calling ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_ShutdownAsync",children:(0,i.jsx)(n.code,{children:"ShutdownAsync"})})," in a similar fashion."]}),"\n",(0,i.jsxs)(o.A,{groupId:"languages",children:[(0,i.jsx)(a.A,{value:"cpp",label:"C++",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::Shutdown()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->ShutdownAsync(FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnShutdownComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnShutdownComplete(FModioErrorCode ErrorCode)\n{\n UE_LOG(LogModioGame, Log, TEXT("Shutdown complete with result: %s"), *ErrorCode.GetErrorMessage());\n}\n'})})}),(0,i.jsx)(a.A,{value:"blueprint",label:"Blueprint",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"shutdownasync_runhandlers",src:t(47771).A+"",width:"996",height:"662"})})})]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["You ",(0,i.jsx)(n.em,{children:"must"})," continue to call ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#RunPendingHandlers",children:(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.code,{children:"RunPendingHandlers"})})})," while shutdown is in progress to allow intermediate handlers to complete."]}),"\n",(0,i.jsx)(n.li,{children:"Any in-flight mod.io async calls will complete with an error code indicating cancellation."}),"\n",(0,i.jsxs)(n.li,{children:["You ",(0,i.jsx)(n.em,{children:"must not"})," call ",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.code,{children:"ShutdownAsync"})})," from within another completion handler/callback. This may cause the application to deadlock."]}),"\n"]})})]})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},19365:(e,n,t)=>{t.d(n,{A:()=>a});t(96540);var i=t(18215);const r={tabItem:"tabItem_Ymn6"};var o=t(74848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,i.A)(r.tabItem,a),hidden:t,children:n})}},11470:(e,n,t)=>{t.d(n,{A:()=>w});var i=t(96540),r=t(18215),o=t(23104),a=t(56347),s=t(205),l=t(57485),d=t(31682),u=t(70679);function c(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return c(e).map((e=>{let{props:{value:n,label:t,attributes:i,default:r}}=e;return{value:n,label:t,attributes:i,default:r}}))}(t);return function(e){const n=(0,d.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const r=(0,a.W6)(),o=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(o),(0,i.useCallback)((e=>{if(!o)return;const n=new URLSearchParams(r.location.search);n.set(o,e),r.replace({...r.location,search:n.toString()})}),[o,r])]}function p(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,o=h(e),[a,l]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=t.find((e=>e.default))??t[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:o}))),[d,c]=g({queryString:t,groupId:r}),[p,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,o]=(0,u.Dv)(t);return[r,(0,i.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:r}),b=(()=>{const e=d??p;return m({value:e,tabValues:o})?e:null})();(0,s.A)((()=>{b&&l(b)}),[b]);return{selectedValue:a,selectValue:(0,i.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),f(e)}),[c,f,o]),tabValues:o}}var f=t(92303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(74848);function j(e){let{className:n,block:t,selectedValue:i,selectValue:a,tabValues:s}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,o.a_)(),u=e=>{const n=e.currentTarget,t=l.indexOf(n),r=s[t].value;r!==i&&(d(n),a(r))},c=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},n),children:s.map((e=>{let{value:n,label:t,attributes:o}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>l.push(e),onKeyDown:c,onClick:u,...o,className:(0,r.A)("tabs__item",b.tabItem,o?.className,{"tabs__item--active":i===n}),children:t??n},n)}))})}function y(e){let{lazy:n,children:t,selectedValue:r}=e;const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,i.cloneElement)(e,{className:"margin-top--md"}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=p(e);return(0,x.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,x.jsx)(j,{...n,...e}),(0,x.jsx)(y,{...n,...e})]})}function w(e){const n=(0,f.A)();return(0,x.jsx)(v,{...e,children:c(e.children)},String(n))}},89236:(e,n,t)=>{t.d(n,{A:()=>o});var i=t(19365),r=(t(96540),t(74848));function o(e){return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(i.A,{className:"tw-rounded-md",...e})})}},27064:(e,n,t)=>{t.d(n,{A:()=>o});var i=t(11470),r=(t(96540),t(74848));function o(e){return(0,r.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,r.jsx)(i.A,{...e})})}},91169:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/initasync_getoptions-297e9d77d325d1bc7ab215940cd91c36.png"},43711:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/run_pending_handlers-3e2c3e1b54ee420c6d94eaf542368454.png"},47771:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/shutdownasync_runhandlers-c2e93330aca93ab1f70644e5fe625841.png"},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var i=t(96540);const r={},o=i.createContext(r);function a(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/9e4dfacd.0af8d679.js b/Doc/assets/js/9e4dfacd.0af8d679.js deleted file mode 100644 index 98d9bc05..00000000 --- a/Doc/assets/js/9e4dfacd.0af8d679.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[6647],{38163:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>s,metadata:()=>d,toc:()=>a});var i=n(74848),r=n(28453);const s={id:"ue-getting-started",title:"Getting Started",slug:"/unreal/getting-started/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/getting-started.mdx"},o=void 0,d={id:"getting-started/ue-getting-started",title:"Getting Started",description:"Below are a series of quick-start guides with code samples demonstrating the mod.io Unreal Engine plugin's core functionality.",source:"@site/public/en-us/getting-started/getting-started.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/",permalink:"/unreal/getting-started/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/getting-started.mdx",tags:[],version:"current",frontMatter:{id:"ue-getting-started",title:"Getting Started",slug:"/unreal/getting-started/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/getting-started.mdx"},sidebar:"sidebar",previous:{title:"Installation & Setup",permalink:"/unreal/installation-and-setup/"},next:{title:"Plugin Structure & Concepts",permalink:"/unreal/getting-started/plugin-structure/"}},l={},a=[{value:"Quick-Start Guides",id:"quick-start-guides",level:3}];function u(t){const e={a:"a",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...t.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.p,{children:"Below are a series of quick-start guides with code samples demonstrating the mod.io Unreal Engine plugin's core functionality."}),"\n",(0,i.jsx)(e.h3,{id:"quick-start-guides",children:"Quick-Start Guides"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"plugin-structure",children:"Plugin Structure & Concepts"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"initialization",children:"Initialization & Teardown"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"user-authentication",children:"User Authentication"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"browsing-mods",children:"Browsing Mods"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"mod-subscriptions",children:"Mod Subscriptions & Management"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"error-handling",children:"Error Handling"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"submit-mods",children:"In-Game Mod Submission"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"edit-mods",children:"Edit an Existing Mod"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"monetization",children:"Monetization"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"temporary-mods",children:"Temporary Mod Sets"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"mute-user",children:"Muting & Unmuting a User"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"metrics-play-sessions",children:"Metrics Play Sessions"})}),"\n"]})]})}function c(t={}){const{wrapper:e}={...(0,r.R)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(u,{...t})}):u(t)}},28453:(t,e,n)=>{n.d(e,{R:()=>o,x:()=>d});var i=n(96540);const r={},s=i.createContext(r);function o(t){const e=i.useContext(s);return i.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function d(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:o(t.components),i.createElement(s.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/9e4dfacd.74a35171.js b/Doc/assets/js/9e4dfacd.74a35171.js new file mode 100644 index 00000000..4d70272a --- /dev/null +++ b/Doc/assets/js/9e4dfacd.74a35171.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[6647],{38163:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>s,metadata:()=>d,toc:()=>a});var i=n(74848),r=n(28453);const s={id:"ue-getting-started",title:"Getting Started",slug:"/unreal/getting-started/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/getting-started.mdx"},o=void 0,d={id:"getting-started/ue-getting-started",title:"Getting Started",description:"Below are a series of quick-start guides with code samples demonstrating the mod.io Unreal Engine plugin's core functionality.",source:"@site/public/en-us/getting-started/getting-started.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/",permalink:"/unreal/getting-started/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/getting-started.mdx",tags:[],version:"current",frontMatter:{id:"ue-getting-started",title:"Getting Started",slug:"/unreal/getting-started/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/getting-started.mdx"},sidebar:"sidebar",previous:{title:"Installation & Setup",permalink:"/unreal/installation-and-setup/"},next:{title:"Plugin Structure & Concepts",permalink:"/unreal/getting-started/plugin-structure/"}},l={},a=[{value:"Quick-Start Guides",id:"quick-start-guides",level:3}];function u(t){const e={a:"a",h3:"h3",li:"li",p:"p",ul:"ul",...(0,r.R)(),...t.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.p,{children:"Below are a series of quick-start guides with code samples demonstrating the mod.io Unreal Engine plugin's core functionality."}),"\n",(0,i.jsx)(e.h3,{id:"quick-start-guides",children:"Quick-Start Guides"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"plugin-structure",children:"Plugin Structure & Concepts"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"initialization",children:"Initialization & Teardown"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"user-authentication",children:"User Authentication"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"browsing-mods",children:"Browsing Mods"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"mod-subscriptions",children:"Mod Subscriptions & Management"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"error-handling",children:"Error Handling"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"submit-mods",children:"In-Game Mod Submission"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"edit-mods",children:"Edit an Existing Mod"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"monetization",children:"Monetization"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"temporary-mods",children:"Temporary Mod Sets"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"mute-user",children:"Muting & Unmuting a User"})}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"metrics-play-sessions",children:"Metrics Play Sessions"})}),"\n"]})]})}function c(t={}){const{wrapper:e}={...(0,r.R)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(u,{...t})}):u(t)}},28453:(t,e,n)=>{n.d(e,{R:()=>o,x:()=>d});var i=n(96540);const r={},s=i.createContext(r);function o(t){const e=i.useContext(s);return i.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function d(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:o(t.components),i.createElement(s.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/b2348a3c.03af1dd0.js b/Doc/assets/js/b2348a3c.03af1dd0.js new file mode 100644 index 00000000..a827822f --- /dev/null +++ b/Doc/assets/js/b2348a3c.03af1dd0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[5633],{54082:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>p,frontMatter:()=>i,metadata:()=>d,toc:()=>c});var o=n(74848),r=n(28453),a=n(27064),s=n(89236);const i={id:"ue-temporary-mods",title:"Temporary Mod Sets",slug:"/unreal/getting-started/temporary-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/temporary-mods.mdx"},l=void 0,d={id:"getting-started/ue-temporary-mods",title:"Temporary Mod Sets",description:"In some situations, you may want mods to only exist on a temporary basis. For instance, in multiplayer environments where you don't want to subscribe a user to a piece of content. Temporary mod sets allow management of these transient pieces of content separately from subscriptions. Temp mod sets do not require authentication, however mod management must still be enabled.",source:"@site/public/en-us/getting-started/temporary-mods.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/temporary-mods",permalink:"/unreal/getting-started/temporary-mods",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/temporary-mods.mdx",tags:[],version:"current",frontMatter:{id:"ue-temporary-mods",title:"Temporary Mod Sets",slug:"/unreal/getting-started/temporary-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/temporary-mods.mdx"},sidebar:"sidebar",previous:{title:"Monetization",permalink:"/unreal/getting-started/monetization"},next:{title:"Muting and Unmuting a User",permalink:"/unreal/getting-started/mute-user"}},u={},c=[{value:"Installing Temporary Mods",id:"installing-temporary-mods",level:3}];function m(e){const t={a:"a",admonition:"admonition",code:"code",h3:"h3",img:"img",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"In some situations, you may want mods to only exist on a temporary basis. For instance, in multiplayer environments where you don't want to subscribe a user to a piece of content. Temporary mod sets allow management of these transient pieces of content separately from subscriptions. Temp mod sets do not require authentication, however mod management must still be enabled."}),"\n",(0,o.jsxs)(t.p,{children:["Temp mods are downloaded to a separate folder from subscriptions, and are not updated or handled when you call ",(0,o.jsx)(t.code,{children:"FetchExternalUpdatesAsync"}),". That means you can prioritize download and installation of temp mods outside of the regular subscription flow."]}),"\n",(0,o.jsxs)(t.p,{children:["To use temp mods, you can start a ",(0,o.jsx)(t.code,{children:"TempModSet"})," by calling ",(0,o.jsx)(t.code,{children:"InitTempModSet"})," and passing a list of ",(0,o.jsx)(t.code,{children:"ModioModIDs"})," to be downloaded and extracted. At any time while a ",(0,o.jsx)(t.code,{children:"TempModSet"})," is open, you can call ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#addtotempmodset",children:(0,o.jsx)(t.code,{children:"AddToTempModSet"})})," to add mods to the set. These will be instantly downloaded and extracted. If you no longer need a mod, you can call ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#removefromtempmodset",children:(0,o.jsx)(t.code,{children:"RemoveFromTempModSet"})})," which will remove the file. Once you have finished with a ",(0,o.jsx)(t.code,{children:"TempModSet"}),", call ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#closetempmodset",children:(0,o.jsx)(t.code,{children:"CloseTempModSet"})})," which will delete all temporary mods. Temporary mods are also deleted the next time you re-initialize the mod.io plugin."]}),"\n",(0,o.jsxs)(t.p,{children:["Like regular mods, temp mods can be queried using ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#querytempmodset",children:(0,o.jsx)(t.code,{children:"QueryTempModSet"})})," to get a ",(0,o.jsx)(t.code,{children:"ModioModCollectionEntry"})," with an installation path."]}),"\n",(0,o.jsx)(t.h3,{id:"installing-temporary-mods",children:"Installing Temporary Mods"}),"\n",(0,o.jsxs)(a.A,{"group-id":"languages",children:[(0,o.jsx)(s.A,{value:"blueprint",label:"Blueprint",children:(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"temp_mod_init",src:n(22177).A+"",width:"998",height:"240"})})}),(0,o.jsx)(s.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-cpp",children:'Modio::EnableModManagement([](Modio::ModManagementEvent ModEvent)\n{\n if (ModEvent.Status && ModEvent.Event == Modio::ModManagementEvent::EventType::Installed)\n {\n std::cout << "Mod with ID: " << ModEvent.ID << " is installed" << std::endl;\n }\n else \n {\n std::cout << "Mod with ID: " << ModEvent.ID << " failed to install: " << ModEvent.Status.message() << std::endl;\n }\n});\n\nstd::vector ModIds = {8, 4, 5};\n\nModio::InitTempModSet(ModIds);\n\nwhile(Modio::IsModManagementBusy())\n{\n Modio::RunPendingHandlers();\n}\n'})})})]}),"\n",(0,o.jsxs)(t.p,{children:["This call will start a ",(0,o.jsx)(t.code,{children:"TempModSet"})," and install mods with IDs 8, 4 and 5."]}),"\n",(0,o.jsxs)(t.admonition,{type:"note",children:[(0,o.jsx)(t.mdxAdmonitionTitle,{}),(0,o.jsxs)(t.p,{children:["If you add a mod to ",(0,o.jsx)(t.code,{children:"TempModSet"})," that is already subscribed, it will not be downloaded; the player will already have that content. If you try to unsubscribe from it while it's in ",(0,o.jsx)(t.code,{children:"TempModSet"}),", the plugin will wait for it to be removed from ",(0,o.jsx)(t.code,{children:"TempModSet"})," before processing the unsubscribe."]})]})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(m,{...e})}):m(e)}},19365:(e,t,n)=>{n.d(t,{A:()=>s});n(96540);var o=n(18215);const r={tabItem:"tabItem_Ymn6"};var a=n(74848);function s(e){let{children:t,hidden:n,className:s}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,o.A)(r.tabItem,s),hidden:n,children:t})}},11470:(e,t,n)=>{n.d(t,{A:()=>M});var o=n(96540),r=n(18215),a=n(23104),s=n(56347),i=n(205),l=n(57485),d=n(31682),u=n(70679);function c(e){return o.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??function(e){return c(e).map((e=>{let{props:{value:t,label:n,attributes:o,default:r}}=e;return{value:t,label:n,attributes:o,default:r}}))}(n);return function(e){const t=(0,d.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const r=(0,s.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,o.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(r.location.search);t.set(a,e),r.replace({...r.location,search:t.toString()})}),[a,r])]}function b(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,a=m(e),[s,l]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const o=n.find((e=>e.default))??n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:t,tabValues:a}))),[d,c]=h({queryString:n,groupId:r}),[b,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,a]=(0,u.Dv)(n);return[r,(0,o.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:r}),g=(()=>{const e=d??b;return p({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:s,selectValue:(0,o.useCallback)((e=>{if(!p({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),f(e)}),[c,f,a]),tabValues:a}}var f=n(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=n(74848);function v(e){let{className:t,block:n,selectedValue:o,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),r=i[n].value;r!==o&&(d(t),s(r))},c=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":n},t),children:i.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,ref:e=>l.push(e),onKeyDown:c,onClick:u,...a,className:(0,r.A)("tabs__item",g.tabItem,a?.className,{"tabs__item--active":o===t}),children:n??t},t)}))})}function x(e){let{lazy:t,children:n,selectedValue:r}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===r));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==r})))})}function w(e){const t=b(e);return(0,y.jsxs)("div",{className:(0,r.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(x,{...t,...e})]})}function M(e){const t=(0,f.A)();return(0,y.jsx)(w,{...e,children:c(e.children)},String(t))}},89236:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(19365),r=(n(96540),n(74848));function a(e){return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(o.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(11470),r=(n(96540),n(74848));function a(e){return(0,r.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,r.jsx)(o.A,{...e})})}},22177:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/temp_mod_init-d5d5b4131ec5e8ed84266b2aedf97c03.png"},28453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>i});var o=n(96540);const r={},a=o.createContext(r);function s(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/b2348a3c.612bac9c.js b/Doc/assets/js/b2348a3c.612bac9c.js deleted file mode 100644 index 6e73fa31..00000000 --- a/Doc/assets/js/b2348a3c.612bac9c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[5633],{54082:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>p,frontMatter:()=>i,metadata:()=>d,toc:()=>c});var o=n(74848),r=n(28453),a=n(27064),s=n(89236);const i={id:"ue-temporary-mods",title:"Temporary Mod Sets",slug:"/unreal/getting-started/temporary-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/temporary-mods.mdx"},l=void 0,d={id:"getting-started/ue-temporary-mods",title:"Temporary Mod Sets",description:"In some situations, you may want mods to only exist on a temporary basis. For instance, in multiplayer environments where you don't want to subscribe a user to a piece of content. Temporary mod sets allow management of these transient pieces of content separately from subscriptions. Temp mod sets do not require authentication, however mod management must still be enabled.",source:"@site/public/en-us/getting-started/temporary-mods.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/temporary-mods",permalink:"/unreal/getting-started/temporary-mods",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/temporary-mods.mdx",tags:[],version:"current",frontMatter:{id:"ue-temporary-mods",title:"Temporary Mod Sets",slug:"/unreal/getting-started/temporary-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/temporary-mods.mdx"},sidebar:"sidebar",previous:{title:"Monetization",permalink:"/unreal/getting-started/monetization"},next:{title:"Muting and Unmuting a User",permalink:"/unreal/getting-started/mute-user"}},u={},c=[{value:"Installing Temporary Mods",id:"installing-temporary-mods",level:3}];function m(e){const t={a:"a",admonition:"admonition",code:"code",h3:"h3",img:"img",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"In some situations, you may want mods to only exist on a temporary basis. For instance, in multiplayer environments where you don't want to subscribe a user to a piece of content. Temporary mod sets allow management of these transient pieces of content separately from subscriptions. Temp mod sets do not require authentication, however mod management must still be enabled."}),"\n",(0,o.jsxs)(t.p,{children:["Temp mods are downloaded to a separate folder from subscriptions, and are not updated or handled when you call ",(0,o.jsx)(t.code,{children:"FetchExternalUpdatesAsync"}),". That means you can prioritize download and installation of temp mods outside of the regular subscription flow."]}),"\n",(0,o.jsxs)(t.p,{children:["To use temp mods, you can start a ",(0,o.jsx)(t.code,{children:"TempModSet"})," by calling ",(0,o.jsx)(t.code,{children:"InitTempModSet"})," and passing a list of ",(0,o.jsx)(t.code,{children:"ModioModIDs"})," to be downloaded and extracted. At any time while a ",(0,o.jsx)(t.code,{children:"TempModSet"})," is open, you can call ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_AddToTempModSet",children:(0,o.jsx)(t.code,{children:"AddToTempModSet"})})," to add mods to the set. These will be instantly downloaded and extracted. If you no longer need a mod, you can call ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_RemoveFromTempModSet",children:(0,o.jsx)(t.code,{children:"RemoveFromTempModSet"})})," which will remove the file. Once you have finished with a ",(0,o.jsx)(t.code,{children:"TempModSet"}),", call ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_CloseTempModSet",children:(0,o.jsx)(t.code,{children:"CloseTempModSet"})})," which will delete all temporary mods. Temporary mods are also deleted the next time you re-initialize the mod.io plugin."]}),"\n",(0,o.jsxs)(t.p,{children:["Like regular mods, temp mods can be queried using ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_QueryTempModSet",children:(0,o.jsx)(t.code,{children:"QueryTempModSet"})})," to get a ",(0,o.jsx)(t.code,{children:"ModioModCollectionEntry"})," with an installation path."]}),"\n",(0,o.jsx)(t.h3,{id:"installing-temporary-mods",children:"Installing Temporary Mods"}),"\n",(0,o.jsxs)(a.A,{"group-id":"languages",children:[(0,o.jsx)(s.A,{value:"blueprint",label:"Blueprint",children:(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"temp_mod_init",src:n(39660).A+"",width:"998",height:"240"})})}),(0,o.jsx)(s.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-cpp",children:'Modio::EnableModManagement([](Modio::ModManagementEvent ModEvent)\n{\n if (ModEvent.Status && ModEvent.Event == Modio::ModManagementEvent::EventType::Installed)\n {\n std::cout << "Mod with ID: " << ModEvent.ID << " is installed" << std::endl;\n }\n else \n {\n std::cout << "Mod with ID: " << ModEvent.ID << " failed to install: " << ModEvent.Status.message() << std::endl;\n }\n});\n\nstd::vector ModIds = {8, 4, 5};\n\nModio::InitTempModSet(ModIds);\n\nwhile(Modio::IsModManagementBusy())\n{\n Modio::RunPendingHandlers();\n}\n'})})})]}),"\n",(0,o.jsxs)(t.p,{children:["This call will start a ",(0,o.jsx)(t.code,{children:"TempModSet"})," and install mods with IDs 8, 4 and 5."]}),"\n",(0,o.jsxs)(t.admonition,{type:"note",children:[(0,o.jsx)(t.mdxAdmonitionTitle,{}),(0,o.jsxs)(t.p,{children:["If you add a mod to ",(0,o.jsx)(t.code,{children:"TempModSet"})," that is already subscribed, it will not be downloaded; the player will already have that content. If you try to unsubscribe from it while it's in ",(0,o.jsx)(t.code,{children:"TempModSet"}),", the plugin will wait for it to be removed from ",(0,o.jsx)(t.code,{children:"TempModSet"})," before processing the unsubscribe."]})]})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(m,{...e})}):m(e)}},19365:(e,t,n)=>{n.d(t,{A:()=>s});n(96540);var o=n(18215);const r={tabItem:"tabItem_Ymn6"};var a=n(74848);function s(e){let{children:t,hidden:n,className:s}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,o.A)(r.tabItem,s),hidden:n,children:t})}},11470:(e,t,n)=>{n.d(t,{A:()=>M});var o=n(96540),r=n(18215),a=n(23104),s=n(56347),i=n(205),l=n(57485),d=n(31682),u=n(70679);function c(e){return o.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??function(e){return c(e).map((e=>{let{props:{value:t,label:n,attributes:o,default:r}}=e;return{value:t,label:n,attributes:o,default:r}}))}(n);return function(e){const t=(0,d.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const r=(0,s.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,o.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(r.location.search);t.set(a,e),r.replace({...r.location,search:t.toString()})}),[a,r])]}function b(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,a=m(e),[s,l]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const o=n.find((e=>e.default))??n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:t,tabValues:a}))),[d,c]=h({queryString:n,groupId:r}),[b,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,a]=(0,u.Dv)(n);return[r,(0,o.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:r}),g=(()=>{const e=d??b;return p({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:s,selectValue:(0,o.useCallback)((e=>{if(!p({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),f(e)}),[c,f,a]),tabValues:a}}var f=n(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=n(74848);function v(e){let{className:t,block:n,selectedValue:o,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=l.indexOf(t),r=i[n].value;r!==o&&(d(t),s(r))},c=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":n},t),children:i.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,ref:e=>l.push(e),onKeyDown:c,onClick:u,...a,className:(0,r.A)("tabs__item",g.tabItem,a?.className,{"tabs__item--active":o===t}),children:n??t},t)}))})}function x(e){let{lazy:t,children:n,selectedValue:r}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===r));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==r})))})}function w(e){const t=b(e);return(0,y.jsxs)("div",{className:(0,r.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(x,{...t,...e})]})}function M(e){const t=(0,f.A)();return(0,y.jsx)(w,{...e,children:c(e.children)},String(t))}},89236:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(19365),r=(n(96540),n(74848));function a(e){return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(o.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(11470),r=(n(96540),n(74848));function a(e){return(0,r.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,r.jsx)(o.A,{...e})})}},39660:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/temp_mod_init-d5d5b4131ec5e8ed84266b2aedf97c03.png"},28453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>i});var o=n(96540);const r={},a=o.createContext(r);function s(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/b69370a5.93b89783.js b/Doc/assets/js/b69370a5.93b89783.js deleted file mode 100644 index 8597f58c..00000000 --- a/Doc/assets/js/b69370a5.93b89783.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[7288],{36967:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>s,metadata:()=>d,toc:()=>u});var n=t(74848),o=t(28453),a=t(27064),i=t(89236);const s={id:"ue-error-handling",title:"Error Handling",slug:"/unreal/getting-started/error-handling",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/error-handling.mdx"},l=void 0,d={id:"getting-started/ue-error-handling",title:"Error Handling",description:"Error handling in Blueprint is still undergoing improvement. Please let us know if you have any feedback or suggestions for improving it!",source:"@site/public/en-us/getting-started/error-handling.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/error-handling",permalink:"/unreal/getting-started/error-handling",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/error-handling.mdx",tags:[],version:"current",frontMatter:{id:"ue-error-handling",title:"Error Handling",slug:"/unreal/getting-started/error-handling",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/error-handling.mdx"},sidebar:"sidebar",previous:{title:"Edit an Existing Mod",permalink:"/unreal/getting-started/edit-mods"},next:{title:"Monetization",permalink:"/unreal/getting-started/monetization"}},c={},u=[{value:"Checking for errors",id:"checking-for-errors",level:3},{value:"Inspecting ModioErrorCode more deeply",id:"inspecting-modioerrorcode-more-deeply",level:3},{value:"Semantic queries",id:"semantic-queries",level:4},{value:"Parameter validation errors",id:"parameter-validation-errors",level:3}];function h(e){const r={a:"a",admonition:"admonition",code:"code",h3:"h3",h4:"h4",img:"img",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.admonition,{type:"note",children:(0,n.jsx)(r.p,{children:"Error handling in Blueprint is still undergoing improvement. Please let us know if you have any feedback or suggestions for improving it!"})}),"\n",(0,n.jsxs)(r.p,{children:["Many of the plugin's functions utilize the ",(0,n.jsx)(r.a,{href:"https://docs.mod.io/unrealref/#_modioerrorcode",children:(0,n.jsx)(r.code,{children:"ModioErrorCode"})})," type. For example, all ",(0,n.jsx)(r.a,{href:"/unreal/getting-started/plugin-structure/#non-blocking-asynchronous-interface",children:"async"})," functions take a ",(0,n.jsx)(r.code,{children:"ModioErrorCode"})," as the first parameter for the function's delegate. This is essentially an opaque wrapper around a numeric error code with a category and an associated string message."]}),"\n",(0,n.jsx)(r.h3,{id:"checking-for-errors",children:"Checking for errors"}),"\n",(0,n.jsxs)(r.p,{children:['A "truthy" error code represents an error. In Blueprint, you can check if a ',(0,n.jsx)(r.code,{children:"ModioErrorCode"})," represents a success or failure by using the ",(0,n.jsx)(r.code,{children:"IsError"})," node."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(i.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"is_error",src:t(26709).A+"",width:"470",height:"118"})})}),(0,n.jsx)(i.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-cpp",children:"void UModioManagerSubsystem::MyCallback(FModioErrorCode ErrorCode)\n{\n if (ErrorCode)\n {\n // Failure\n }\n else\n {\n // Success\n }\n}\n"})})})]}),"\n",(0,n.jsxs)(r.h3,{id:"inspecting-modioerrorcode-more-deeply",children:["Inspecting ",(0,n.jsx)(r.code,{children:"ModioErrorCode"})," more deeply"]}),"\n",(0,n.jsx)(r.p,{children:"Sometimes this information will be all that is required; just a simple 'success/fail' that you can handle."}),"\n",(0,n.jsxs)(r.p,{children:["In many cases, however, you will want to perform some degree of inspection on an ",(0,n.jsx)(r.code,{children:"ModioErrorCode"})," to determine specific information about that error - if nothing else, so that you can display a reason for the failure to the end user."]}),"\n",(0,n.jsx)(r.h4,{id:"semantic-queries",children:"Semantic queries"}),"\n",(0,n.jsx)(r.p,{children:'In your application, there are many errors that will likely be handled the same way. For example, you probably don\u2019t need to handle different network errors in different ways. The semantics of networking errors are largely "try the function again later".'}),"\n",(0,n.jsxs)(r.p,{children:["This is where ",(0,n.jsx)(r.a,{href:"https://docs.mod.io/unrealref/#ErrorCodeMatches",children:(0,n.jsx)(r.code,{children:"ErrorCodeMatches"})}),' comes in. It allows you to query if the error satisfies a particular condition, such as "does this code represent some kind of networking error", without needing to explicitly check the code against all the individual errors in the category.']}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"error_code_matches_network_error",src:t(96338).A+"",width:"633",height:"228"})}),"\n",(0,n.jsx)(r.p,{children:"By querying if an error meets a specific condition, you can focus on handling a family of errors (in this case, network transmission errors) without needing to deal with individual errors within that group. No more manually checking against individual HttpError values, just a single query."}),"\n",(0,n.jsx)(r.p,{children:"These semantic checks help you to consolidate your error handling into limited set of generic error handlers rather than dealing with each potential outcome individually."}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"error_code_matches_chaining",src:t(80710).A+"",width:"1231",height:"507"})}),"\n",(0,n.jsx)(r.h3,{id:"parameter-validation-errors",children:"Parameter validation errors"}),"\n",(0,n.jsxs)(r.p,{children:["Some of the plugin functions may return errors that indicate a parameter or data validation failure. For these cases, the plugin parses the error response from the mod.io API and stores the information about which parameters failed validation until the next network request is performed. If a plugin function returns an error which matches ",(0,n.jsx)(r.code,{children:"EModioErrorCondition::InvalidArgsError"}),", you can call ",(0,n.jsx)(r.code,{children:"GetLastValidationError"})," in your callback to retrieve those errors and display appropriate feedback to the end user."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"get_last_validation_error",src:t(97284).A+"",width:"1340",height:"247"})})]})}function p(e={}){const{wrapper:r}={...(0,o.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},19365:(e,r,t)=>{t.d(r,{A:()=>i});t(96540);var n=t(18215);const o={tabItem:"tabItem_Ymn6"};var a=t(74848);function i(e){let{children:r,hidden:t,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,n.A)(o.tabItem,i),hidden:t,children:r})}},11470:(e,r,t)=>{t.d(r,{A:()=>j});var n=t(96540),o=t(18215),a=t(23104),i=t(56347),s=t(205),l=t(57485),d=t(31682),c=t(70679);function u(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:t}=e;return(0,n.useMemo)((()=>{const e=r??function(e){return u(e).map((e=>{let{props:{value:r,label:t,attributes:n,default:o}}=e;return{value:r,label:t,attributes:n,default:o}}))}(t);return function(e){const r=(0,d.X)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,t])}function p(e){let{value:r,tabValues:t}=e;return t.some((e=>e.value===r))}function m(e){let{queryString:r=!1,groupId:t}=e;const o=(0,i.W6)(),a=function(e){let{queryString:r=!1,groupId:t}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:r,groupId:t});return[(0,l.aZ)(a),(0,n.useCallback)((e=>{if(!a)return;const r=new URLSearchParams(o.location.search);r.set(a,e),o.replace({...o.location,search:r.toString()})}),[a,o])]}function g(e){const{defaultValue:r,queryString:t=!1,groupId:o}=e,a=h(e),[i,l]=(0,n.useState)((()=>function(e){let{defaultValue:r,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!p({value:r,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const n=t.find((e=>e.default))??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:r,tabValues:a}))),[d,u]=m({queryString:t,groupId:o}),[g,f]=function(e){let{groupId:r}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(r),[o,a]=(0,c.Dv)(t);return[o,(0,n.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:o}),b=(()=>{const e=d??g;return p({value:e,tabValues:a})?e:null})();(0,s.A)((()=>{b&&l(b)}),[b]);return{selectedValue:i,selectValue:(0,n.useCallback)((e=>{if(!p({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),f(e)}),[u,f,a]),tabValues:a}}var f=t(92303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(74848);function y(e){let{className:r,block:t,selectedValue:n,selectValue:i,tabValues:s}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),c=e=>{const r=e.currentTarget,t=l.indexOf(r),o=s[t].value;o!==n&&(d(r),i(o))},u=e=>{let r=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;r=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;r=l[t]??l[l.length-1];break}}r?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},r),children:s.map((e=>{let{value:r,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:n===r?0:-1,"aria-selected":n===r,ref:e=>l.push(e),onKeyDown:u,onClick:c,...a,className:(0,o.A)("tabs__item",b.tabItem,a?.className,{"tabs__item--active":n===r}),children:t??r},r)}))})}function x(e){let{lazy:r,children:t,selectedValue:o}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,n.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function w(e){const r=g(e);return(0,v.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,v.jsx)(y,{...r,...e}),(0,v.jsx)(x,{...r,...e})]})}function j(e){const r=(0,f.A)();return(0,v.jsx)(w,{...e,children:u(e.children)},String(r))}},89236:(e,r,t)=>{t.d(r,{A:()=>a});var n=t(19365),o=(t(96540),t(74848));function a(e){return(0,o.jsx)(o.Fragment,{children:(0,o.jsx)(n.A,{className:"tw-rounded-md",...e})})}},27064:(e,r,t)=>{t.d(r,{A:()=>a});var n=t(11470),o=(t(96540),t(74848));function a(e){return(0,o.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,o.jsx)(n.A,{...e})})}},80710:(e,r,t)=>{t.d(r,{A:()=>n});const n=t.p+"assets/images/error_code_matches_chaining-86eec7eaebbbe82bf284e055ebd192d1.png"},96338:(e,r,t)=>{t.d(r,{A:()=>n});const n=t.p+"assets/images/error_code_matches_network_error-7ff80a95b75b1cf050da273595c027c5.png"},97284:(e,r,t)=>{t.d(r,{A:()=>n});const n=t.p+"assets/images/get_last_validation_error-bc856beda3feb292b5056037c771719a.png"},26709:(e,r,t)=>{t.d(r,{A:()=>n});const n=t.p+"assets/images/is_error-d9d2d4f7512b0e2c1bc6de68fbb1c255.png"},28453:(e,r,t)=>{t.d(r,{R:()=>i,x:()=>s});var n=t(96540);const o={},a=n.createContext(o);function i(e){const r=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function s(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(a.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/b69370a5.cd361d24.js b/Doc/assets/js/b69370a5.cd361d24.js new file mode 100644 index 00000000..d11d5e7f --- /dev/null +++ b/Doc/assets/js/b69370a5.cd361d24.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[7288],{36967:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>c,contentTitle:()=>l,default:()=>g,frontMatter:()=>s,metadata:()=>d,toc:()=>u});var n=t(74848),o=t(28453),a=t(27064),i=t(89236);const s={id:"ue-error-handling",title:"Error Handling",slug:"/unreal/getting-started/error-handling",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/error-handling.mdx"},l=void 0,d={id:"getting-started/ue-error-handling",title:"Error Handling",description:"Error handling in Blueprint is still undergoing improvement. Please let us know if you have any feedback or suggestions for improving it!",source:"@site/public/en-us/getting-started/error-handling.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/error-handling",permalink:"/unreal/getting-started/error-handling",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/error-handling.mdx",tags:[],version:"current",frontMatter:{id:"ue-error-handling",title:"Error Handling",slug:"/unreal/getting-started/error-handling",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/error-handling.mdx"},sidebar:"sidebar",previous:{title:"Edit an Existing Mod",permalink:"/unreal/getting-started/edit-mods"},next:{title:"Monetization",permalink:"/unreal/getting-started/monetization"}},c={},u=[{value:"Checking for errors",id:"checking-for-errors",level:3},{value:"Inspecting ModioErrorCode more deeply",id:"inspecting-modioerrorcode-more-deeply",level:3},{value:"Semantic queries",id:"semantic-queries",level:4},{value:"Parameter validation errors",id:"parameter-validation-errors",level:3}];function h(e){const r={a:"a",admonition:"admonition",code:"code",h3:"h3",h4:"h4",img:"img",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.admonition,{type:"note",children:(0,n.jsx)(r.p,{children:"Error handling in Blueprint is still undergoing improvement. Please let us know if you have any feedback or suggestions for improving it!"})}),"\n",(0,n.jsxs)(r.p,{children:["Many of the plugin's functions utilize the ",(0,n.jsx)(r.a,{href:"/unreal/refdocs/#modioerrorcode",children:(0,n.jsx)(r.code,{children:"ModioErrorCode"})})," type. For example, all ",(0,n.jsx)(r.a,{href:"/unreal/getting-started/plugin-structure/#non-blocking-asynchronous-interface",children:"async"})," functions take a ",(0,n.jsx)(r.code,{children:"ModioErrorCode"})," as the first parameter for the function's delegate. This is essentially an opaque wrapper around a numeric error code with a category and an associated string message."]}),"\n",(0,n.jsx)(r.h3,{id:"checking-for-errors",children:"Checking for errors"}),"\n",(0,n.jsxs)(r.p,{children:['A "truthy" error code represents an error. In Blueprint, you can check if a ',(0,n.jsx)(r.code,{children:"ModioErrorCode"})," represents a success or failure by using the ",(0,n.jsx)(r.code,{children:"IsError"})," node."]}),"\n",(0,n.jsxs)(a.A,{"group-id":"languages",children:[(0,n.jsx)(i.A,{value:"blueprint",label:"Blueprint",children:(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"is_error",src:t(45530).A+"",width:"470",height:"118"})})}),(0,n.jsx)(i.A,{value:"c++",label:"C++",default:!0,children:(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-cpp",children:"void UModioManagerSubsystem::MyCallback(FModioErrorCode ErrorCode)\n{\n if (ErrorCode)\n {\n // Failure\n }\n else\n {\n // Success\n }\n}\n"})})})]}),"\n",(0,n.jsxs)(r.h3,{id:"inspecting-modioerrorcode-more-deeply",children:["Inspecting ",(0,n.jsx)(r.code,{children:"ModioErrorCode"})," more deeply"]}),"\n",(0,n.jsx)(r.p,{children:"Sometimes this information will be all that is required; just a simple 'success/fail' that you can handle."}),"\n",(0,n.jsxs)(r.p,{children:["In many cases, however, you will want to perform some degree of inspection on an ",(0,n.jsx)(r.code,{children:"ModioErrorCode"})," to determine specific information about that error - if nothing else, so that you can display a reason for the failure to the end user."]}),"\n",(0,n.jsx)(r.h4,{id:"semantic-queries",children:"Semantic queries"}),"\n",(0,n.jsx)(r.p,{children:'In your application, there are many errors that will likely be handled the same way. For example, you probably don\u2019t need to handle different network errors in different ways. The semantics of networking errors are largely "try the function again later".'}),"\n",(0,n.jsxs)(r.p,{children:["This is where ",(0,n.jsx)(r.a,{href:"/unreal/refdocs/#error-code-matches",children:(0,n.jsx)(r.code,{children:"ErrorCodeMatches"})}),' comes in. It allows you to query if the error satisfies a particular condition, such as "does this code represent some kind of networking error", without needing to explicitly check the code against all the individual errors in the category.']}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"error_code_matches_network_error",src:t(25701).A+"",width:"633",height:"228"})}),"\n",(0,n.jsx)(r.p,{children:"By querying if an error meets a specific condition, you can focus on handling a family of errors (in this case, network transmission errors) without needing to deal with individual errors within that group. No more manually checking against individual HttpError values, just a single query."}),"\n",(0,n.jsx)(r.p,{children:"These semantic checks help you to consolidate your error handling into limited set of generic error handlers rather than dealing with each potential outcome individually."}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"error_code_matches_chaining",src:t(34803).A+"",width:"1231",height:"507"})}),"\n",(0,n.jsx)(r.h3,{id:"parameter-validation-errors",children:"Parameter validation errors"}),"\n",(0,n.jsxs)(r.p,{children:["Some of the plugin functions may return errors that indicate a parameter or data validation failure. For these cases, the plugin parses the error response from the mod.io API and stores the information about which parameters failed validation until the next network request is performed. If a plugin function returns an error which matches ",(0,n.jsx)(r.code,{children:"EModioErrorCondition::InvalidArgsError"}),", you can call ",(0,n.jsx)(r.code,{children:"GetLastValidationError"})," in your callback to retrieve those errors and display appropriate feedback to the end user."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"get_last_validation_error",src:t(84905).A+"",width:"1340",height:"247"})})]})}function g(e={}){const{wrapper:r}={...(0,o.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},19365:(e,r,t)=>{t.d(r,{A:()=>i});t(96540);var n=t(18215);const o={tabItem:"tabItem_Ymn6"};var a=t(74848);function i(e){let{children:r,hidden:t,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,n.A)(o.tabItem,i),hidden:t,children:r})}},11470:(e,r,t)=>{t.d(r,{A:()=>j});var n=t(96540),o=t(18215),a=t(23104),i=t(56347),s=t(205),l=t(57485),d=t(31682),c=t(70679);function u(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:t}=e;return(0,n.useMemo)((()=>{const e=r??function(e){return u(e).map((e=>{let{props:{value:r,label:t,attributes:n,default:o}}=e;return{value:r,label:t,attributes:n,default:o}}))}(t);return function(e){const r=(0,d.X)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,t])}function g(e){let{value:r,tabValues:t}=e;return t.some((e=>e.value===r))}function m(e){let{queryString:r=!1,groupId:t}=e;const o=(0,i.W6)(),a=function(e){let{queryString:r=!1,groupId:t}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:r,groupId:t});return[(0,l.aZ)(a),(0,n.useCallback)((e=>{if(!a)return;const r=new URLSearchParams(o.location.search);r.set(a,e),o.replace({...o.location,search:r.toString()})}),[a,o])]}function p(e){const{defaultValue:r,queryString:t=!1,groupId:o}=e,a=h(e),[i,l]=(0,n.useState)((()=>function(e){let{defaultValue:r,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!g({value:r,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const n=t.find((e=>e.default))??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:r,tabValues:a}))),[d,u]=m({queryString:t,groupId:o}),[p,f]=function(e){let{groupId:r}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(r),[o,a]=(0,c.Dv)(t);return[o,(0,n.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:o}),b=(()=>{const e=d??p;return g({value:e,tabValues:a})?e:null})();(0,s.A)((()=>{b&&l(b)}),[b]);return{selectedValue:i,selectValue:(0,n.useCallback)((e=>{if(!g({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),f(e)}),[u,f,a]),tabValues:a}}var f=t(92303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=t(74848);function y(e){let{className:r,block:t,selectedValue:n,selectValue:i,tabValues:s}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),c=e=>{const r=e.currentTarget,t=l.indexOf(r),o=s[t].value;o!==n&&(d(r),i(o))},u=e=>{let r=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;r=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;r=l[t]??l[l.length-1];break}}r?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},r),children:s.map((e=>{let{value:r,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:n===r?0:-1,"aria-selected":n===r,ref:e=>l.push(e),onKeyDown:u,onClick:c,...a,className:(0,o.A)("tabs__item",b.tabItem,a?.className,{"tabs__item--active":n===r}),children:t??r},r)}))})}function x(e){let{lazy:r,children:t,selectedValue:o}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,n.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function w(e){const r=p(e);return(0,v.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,v.jsx)(y,{...r,...e}),(0,v.jsx)(x,{...r,...e})]})}function j(e){const r=(0,f.A)();return(0,v.jsx)(w,{...e,children:u(e.children)},String(r))}},89236:(e,r,t)=>{t.d(r,{A:()=>a});var n=t(19365),o=(t(96540),t(74848));function a(e){return(0,o.jsx)(o.Fragment,{children:(0,o.jsx)(n.A,{className:"tw-rounded-md",...e})})}},27064:(e,r,t)=>{t.d(r,{A:()=>a});var n=t(11470),o=(t(96540),t(74848));function a(e){return(0,o.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,o.jsx)(n.A,{...e})})}},34803:(e,r,t)=>{t.d(r,{A:()=>n});const n=t.p+"assets/images/error_code_matches_chaining-86eec7eaebbbe82bf284e055ebd192d1.png"},25701:(e,r,t)=>{t.d(r,{A:()=>n});const n=t.p+"assets/images/error_code_matches_network_error-7ff80a95b75b1cf050da273595c027c5.png"},84905:(e,r,t)=>{t.d(r,{A:()=>n});const n=t.p+"assets/images/get_last_validation_error-bc856beda3feb292b5056037c771719a.png"},45530:(e,r,t)=>{t.d(r,{A:()=>n});const n=t.p+"assets/images/is_error-d9d2d4f7512b0e2c1bc6de68fbb1c255.png"},28453:(e,r,t)=>{t.d(r,{R:()=>i,x:()=>s});var n=t(96540);const o={},a=n.createContext(o);function i(e){const r=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function s(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(a.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/b84ad1c9.2d53dc4b.js b/Doc/assets/js/b84ad1c9.2d53dc4b.js deleted file mode 100644 index 2247bab8..00000000 --- a/Doc/assets/js/b84ad1c9.2d53dc4b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[4101],{97949:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>m,frontMatter:()=>r,metadata:()=>l,toc:()=>u});var o=t(74848),s=t(28453),i=t(27064),a=t(89236);const r={id:"ue-mod-subscriptions",title:"Mod Subscriptions & Management",slug:"/unreal/getting-started/mod-subscriptions",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/mod-subscriptions.mdx"},d=void 0,l={id:"getting-started/ue-mod-subscriptions",title:"Mod Subscriptions & Management",description:"So you\u2019ve shown the user some mods, and they've picked one they\u2019d like to install. How do you begin the installation process? Once the mod is installed, how do you know what files to load into memory?",source:"@site/public/en-us/getting-started/subscriptions.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/mod-subscriptions",permalink:"/unreal/getting-started/mod-subscriptions",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/mod-subscriptions.mdx",tags:[],version:"current",frontMatter:{id:"ue-mod-subscriptions",title:"Mod Subscriptions & Management",slug:"/unreal/getting-started/mod-subscriptions",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/mod-subscriptions.mdx"},sidebar:"sidebar",previous:{title:"Browsing Mods",permalink:"/unreal/getting-started/browsing-mods"},next:{title:"In-Game Mod Submission",permalink:"/unreal/getting-started/submit-mods"}},c={},u=[{value:"Mod subscriptions",id:"mod-subscriptions",level:2},{value:"External subscription changes",id:"external-subscription-changes",level:2},{value:"Checking the user subscription list",id:"checking-the-user-subscription-list",level:2},{value:"Installation management",id:"installation-management",level:2},{value:"Retrieving mod directory paths for loading",id:"retrieving-mod-directory-paths-for-loading",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",p:"p",pre:"pre",strong:"strong",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["So you\u2019ve ",(0,o.jsx)(n.a,{href:"browsing-mods",children:"shown the user some mods"}),", and they've picked one they\u2019d like to install. How do you begin the installation process? Once the mod is installed, how do you know what files to load into memory?"]}),"\n",(0,o.jsx)(n.h2,{id:"mod-subscriptions",children:"Mod subscriptions"}),"\n",(0,o.jsxs)(n.p,{children:["Users indicate they want to install a mod by ",(0,o.jsx)(n.strong,{children:"subscribing"})," to it. Subscriptions are stored on the mod.io servers and are associated with a user\u2019s mod.io account, so subscribed mods for a given game will be installed to all devices where a user logs into mod.io for that game. Similarly, when a user ",(0,o.jsx)(n.strong,{children:"unsubscribes"})," from a mod, that mod will be uninstalled from every device they\u2019re logged into mod.io with for that game."]}),"\n",(0,o.jsxs)(n.p,{children:["Subscriptions are managed with calls to either ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_SubscribeToModAsync",children:(0,o.jsx)(n.code,{children:"SubscribeToModAsync"})})," or ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_UnsubscribeFromModAsync",children:(0,o.jsx)(n.code,{children:"UnsubscribeFromModAsync"})})," containing the desired ",(0,o.jsx)(n.code,{children:"ModioModID"})," and a delegate to receive the status of the request."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["To subscribe or unsubscribe from a mod, ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_EnableModManagement",children:(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"EnableModManagement"})})})," ",(0,o.jsx)(n.em,{children:"must"})," be called beforehand."]})}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"SubscribeToModAsync"})," also takes a bool indicating whether or not to to subscribe to any and all dependencies for the given ",(0,o.jsx)(n.code,{children:"ModioModID"}),"."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["When dependencies are included in the ",(0,o.jsx)(n.code,{children:"SubscribeToModAsync"})," call, they will ",(0,o.jsx)(n.em,{children:"not"})," download automatically. ",(0,o.jsxs)(n.strong,{children:["Only the primary mod specified by ",(0,o.jsx)(n.code,{children:"ModioModID"})," will download automatically."]})," To download all subscribed content including dependencies, call ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_FetchExternalUpdatesAsync",children:(0,o.jsx)(n.code,{children:"FetchExternalUpdatesAsync"})})," after ",(0,o.jsx)(n.code,{children:"SubscribeToModAsync"})," successfully completes."]})}),"\n",(0,o.jsxs)(i.A,{"group-id":"languages",children:[(0,o.jsxs)(a.A,{value:"blueprint",label:"Blueprint",children:[(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"subscribe_to_mod",src:t(22095).A+"",width:"785",height:"393"})}),(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"unsubscribe_from_mod",src:t(28269).A+"",width:"785",height:"393"})})]}),(0,o.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::SubscribeToMod(FModioModID ModToSubscribeTo, bool IncludeDependencies)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->SubscribeToModAsync(ModId, IncludeDependencies, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnSubscribeToModComplete, ModId));\n }\n}\n\nvoid UModioManagerSubsystem::OnSubscribeToModComplete(FModioErrorCode ErrorCode, FModioModID ModId)\n{\n if (!ErrorCode)\n {\n \t// Indicate success to your user. This ModId's files will begin installing.\n \t// Call FetchExternalUpdatesAsync if dependencies were included \n }\n}\n\nvoid UModioManagerSubsystem::UnsubscribeFromMod(FModioModID ModId)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->UnsubscribeFromModAsync(ModId, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnUnsubscribeFromModComplete, ModId));\n }\n}\n\nvoid UModioManagerSubsystem::OnUnsubscribeFromModComplete(FModioErrorCode ErrorCode, FModioModId ModId)\n{\n if (!ErrorCode)\n {\n \t// Indicate success to your user. This ModID's files will begin uninstalling.\n }\n}\n"})})})]}),"\n",(0,o.jsx)(n.h2,{id:"external-subscription-changes",children:"External subscription changes"}),"\n",(0,o.jsx)(n.p,{children:"Because mod.io's services are available via our website, users can manage their subscriptions outside of your application. This means that we need to be able to query the server for any external subscription changes."}),"\n",(0,o.jsxs)(n.p,{children:["Call ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_FetchExternalUpdatesAsync",children:(0,o.jsx)(n.code,{children:"FetchExternalUpdatesAsync"})})," to synchronise the server state with the plugin\u2019s local subscriptions. Any required installations or uninstallations based on the updated user subscriptions will be processed automatically."]}),"\n",(0,o.jsxs)(i.A,{"group-id":"languages",children:[(0,o.jsx)(a.A,{value:"blueprint",label:"Blueprint",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"fetch_external_updates",src:t(55371).A+"",width:"525",height:"315"})})}),(0,o.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-cpp",children:"\nvoid UModioManagerSubsystem::FetchExternalUpdates()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->FetchExternalUpdatesAsync(FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnFetchExternalUpdatesComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnFetchExternalUpdatesComplete(FModioErrorCode ErrorCode)\n{\n // error handling etc.\n}\n\n"})})})]}),"\n",(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsxs)(n.p,{children:["Call ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_FetchExternalUpdatesAsync",children:(0,o.jsx)(n.code,{children:"FetchExternalUpdatesAsync"})})," sparingly, only when required to ensure that the local state is up-to-date such as on game start-up or based on user input (i.e. as a button on your UI). It should ",(0,o.jsx)(n.strong,{children:"NOT"})," be called on tick."]})}),"\n",(0,o.jsx)(n.h2,{id:"checking-the-user-subscription-list",children:"Checking the user subscription list"}),"\n",(0,o.jsxs)(n.p,{children:["To see which mods the user has subscribed to, call ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#QueryUserSubscriptions",children:(0,o.jsx)(n.code,{children:"QueryUserSubscriptions"})}),". This retrieves a ",(0,o.jsx)(n.code,{children:"TMap"})," of ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_modiomodcollectionentry",children:(0,o.jsx)(n.code,{children:"ModioModCollectionEntry"})})," objects, one for each subscribed mod. Each ",(0,o.jsx)(n.code,{children:"ModioModCollectionEntry"})," object contains the mod\u2019s state, profile information, ID and more."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["This collection includes mods that are still in the process of being installed! Make sure to check the result of ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#GetModState",children:(0,o.jsx)(n.code,{children:"GetModState"})})," before attempting to load files from the mods in this collection. Alternatively, use ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#QueryUserInstallations",children:(0,o.jsx)(n.code,{children:"QueryUserInstallations"})})," as described in ",(0,o.jsx)(n.a,{href:"#retrieving-mod-directory-paths-for-loading",children:(0,o.jsx)(n.strong,{children:"Retrieving mod directory paths for loading"})}),"."]})}),"\n",(0,o.jsxs)(i.A,{"group-id":"languages",children:[(0,o.jsx)(a.A,{value:"blueprint",label:"Blueprint",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"query_user_subscriptions",src:t(567).A+"",width:"754",height:"338"})})}),(0,o.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::QueryUserSubscriptions()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tTMap SubscribedMods = Subsystem->QueryUserSubscriptions();\n \t// Do something with SubscribedMods e.g. display on a UI\n }\n}\n"})})})]}),"\n",(0,o.jsx)(n.h2,{id:"installation-management",children:"Installation management"}),"\n",(0,o.jsxs)(n.p,{children:["So a subscription marks a mod as requiring installation, and an unsubscription indicates uninstallation, but how do you actually control when the plugin ",(0,o.jsx)(n.strong,{children:"does"})," those things? After all, you don\u2019t want a mod to be uninstalled after your main program has loaded those files into memory, locking them from deletion. Likewise, you probably don\u2019t want to be using networking or processor resources during gameplay for downloading mods. To give you control over when these processes occur without forcing you to shut down the plugin, you can call ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_EnableModManagement",children:(0,o.jsx)(n.code,{children:"EnableModManagement"})})," and ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#DisableModManagement",children:(0,o.jsx)(n.code,{children:"DisableModManagement"})}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["To notify your users when a mod is finished installing or updating, ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_EnableModManagement",children:(0,o.jsx)(n.code,{children:"EnableModManagement"})})," asks you to provide it with a callback. This callback will be invoked ",(0,o.jsx)(n.strong,{children:"every time"})," a ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_modiomodmanagementevent",children:(0,o.jsx)(n.code,{children:"ModioModManagementEvent"})})," occurs i.e. whenever a mod is installed, updated, uninstalled, or uploaded by the plugin\u2019s internal event loop. This behavior persists until a corresponding call to ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#DisableModManagement",children:(0,o.jsx)(n.code,{children:"DisableModManagement"})})," or ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_ShutdownAsync",children:(0,o.jsx)(n.code,{children:"ShutdownAsync"})})," is made."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_EnableModManagement",children:(0,o.jsx)(n.code,{children:"EnableModManagement"})})," is not an async function. It does not end with the ",(0,o.jsx)(n.code,{children:"*Async"})," suffix. Its callback operates differently to asynchronous result callbacks used elsewhere in the mod.io plugin."]})}),"\n",(0,o.jsxs)(i.A,{"group-id":"languages",children:[(0,o.jsx)(a.A,{value:"blueprint",label:"Blueprint",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"enable_mod_management",src:t(3462).A+"",width:"784",height:"539"})})}),(0,o.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::EnableModManagement()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->EnableModManagement(FOnModManagementDelegateFast::CreateUObject(this, &UModioManagerSubsystem::ModManagementCallback));\n }\n}\n\nvoid UModioManagerSubsystem::ModManagementCallback(FModioModManagementEvent ModManagementEvent)\n{\n if (ModManagementEvent.Status)\n {\n \t// error handling\n }\n switch(ModManagementEvent.Event)\n {\n \tcase EModioModManagementEventType::BeginInstall:\n \tcase EModioModManagementEventType::BeginUninstall:\n \tcase EModioModManagementEventType::BeginUpdate:\n \tcase EModioModManagementEventType::BeginUpload:\n \t\tUE_LOG(LogModioGame, Log, TEXT("Begin processing Mod %s"), *ModManagementEvent.ID.ToString());\n \t\tbreak;\n \tcase EModioModManagementEventType::Installed:\n \t\tUE_LOG(LogModioGame, Log, TEXT("Received an Installed event for Mod %s"), *ModManagementEvent.ID.ToString());\n \t\tbreak;\n \tcase EModioModManagementEventType::Uninstalled: \n \t\tUE_LOG(LogModioGame, Log, TEXT("Received an Uninstalled event for Mod %s"), *ModManagementEvent.ID.ToString());\n \t\tbreak;\n \tcase EModioModManagementEventType::Updated:\n \t\tUE_LOG(LogModioGame, Log, TEXT("Received an Updated event for Mod %s"), *ModManagementEvent.ID.ToString());\n \t\tbreak;\n \tcase EModioModManagementEventType::Uploaded:\n \t\tUE_LOG(LogModioGame, Log, TEXT("Received an Uploaded event for Mod %s"), *ModManagementEvent.ID.ToString());\n \t\tbreak;\n \tdefault:;\n }\n}\n'})})})]}),"\n",(0,o.jsxs)(n.p,{children:["While mod management is enabled, the plugin assumes that it has the ability to make changes to the filesystem, including deleting mods that the user has no longer subscribed to. As a result you should make sure that you don\u2019t have any open handles to files inside the mod directories when you call ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_EnableModManagement",children:(0,o.jsx)(n.code,{children:"EnableModManagement"})}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["When you want to be able to freely open files in the mod directories, call ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#DisableModManagement",children:(0,o.jsx)(n.code,{children:"DisableModManagement"})}),". The plugin will finish the current operation but will not continue any others."]}),"\n",(0,o.jsxs)(n.p,{children:["Call ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#IsModManagementBusy",children:(0,o.jsx)(n.code,{children:"IsModManagementBusy"})})," to see if mod management is currently processing a mod."]}),"\n",(0,o.jsx)(i.A,{"group-id":"languages",children:(0,o.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::DisableModManagement()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tif (!Subsystem->IsModManagementBusy())\n \t{\n \t\tSubsystem->DisableModManagement();\n \t}\n }\n}\n"})})})}),"\n",(0,o.jsx)(n.h3,{id:"retrieving-mod-directory-paths-for-loading",children:"Retrieving mod directory paths for loading"}),"\n",(0,o.jsx)(n.p,{children:"So now we have the user picking mods and marking them for installation, we\u2019re enabling mod management at a point where we don\u2019t mind the plugin changing the filesystem, and mods are being installed by the plugin. We now need to know where they are on disk, otherwise you can\u2019t load them into your game!"}),"\n",(0,o.jsxs)(n.p,{children:["The easiest way to do this is by using ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#QueryUserInstallations",children:(0,o.jsx)(n.code,{children:"QueryUserInstallations"})}),". This function returns a ",(0,o.jsx)(n.code,{children:"TMap"})," of ",(0,o.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_modiomodcollectionentry",children:(0,o.jsx)(n.code,{children:"ModioModCollectionEntry"})})," objects that can be queried for folder paths to use for loading a mod's files into your game. ",(0,o.jsx)(n.code,{children:"QueryUserInstallations"})," also allows you to specify whether or not to include outdated mods."]}),"\n",(0,o.jsxs)(i.A,{"group-id":"languages",children:[(0,o.jsx)(a.A,{value:"c++",label:"C++",default:!0,children:(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::GetInstalledMods()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tTMap InstalledMods = Subsystem->QueryUserInstallations(false);\n \t\n \t// Do something with each installed mod, ie adding paths/loading the content appropriately\n }\n}\n"})})}),(0,o.jsx)(a.A,{value:"blueprint",label:"Blueprint",children:(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"query_user_installations",src:t(51314).A+"",width:"1071",height:"248"})})})]})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},19365:(e,n,t)=>{t.d(n,{A:()=>a});t(96540);var o=t(18215);const s={tabItem:"tabItem_Ymn6"};var i=t(74848);function a(e){let{children:n,hidden:t,className:a}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,o.A)(s.tabItem,a),hidden:t,children:n})}},11470:(e,n,t)=>{t.d(n,{A:()=>v});var o=t(96540),s=t(18215),i=t(23104),a=t(56347),r=t(205),d=t(57485),l=t(31682),c=t(70679);function u(e){return o.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,o.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:o,default:s}}=e;return{value:n,label:t,attributes:o,default:s}}))}(t);return function(e){const n=(0,l.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const s=(0,a.W6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,d.aZ)(i),(0,o.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(s.location.search);n.set(i,e),s.replace({...s.location,search:n.toString()})}),[i,s])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=h(e),[a,d]=(0,o.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const o=t.find((e=>e.default))??t[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:n,tabValues:i}))),[l,u]=b({queryString:t,groupId:s}),[g,p]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,i]=(0,c.Dv)(t);return[s,(0,o.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:s}),M=(()=>{const e=l??g;return m({value:e,tabValues:i})?e:null})();(0,r.A)((()=>{M&&d(M)}),[M]);return{selectedValue:a,selectValue:(0,o.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,i]),tabValues:i}}var p=t(92303);const M={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(74848);function y(e){let{className:n,block:t,selectedValue:o,selectValue:a,tabValues:r}=e;const d=[],{blockElementScrollPositionUntilNextRender:l}=(0,i.a_)(),c=e=>{const n=e.currentTarget,t=d.indexOf(n),s=r[t].value;s!==o&&(l(n),a(s))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=d.indexOf(e.currentTarget)+1;n=d[t]??d[0];break}case"ArrowLeft":{const t=d.indexOf(e.currentTarget)-1;n=d[t]??d[d.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:r.map((e=>{let{value:n,label:t,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:o===n?0:-1,"aria-selected":o===n,ref:e=>d.push(e),onKeyDown:u,onClick:c,...i,className:(0,s.A)("tabs__item",M.tabItem,i?.className,{"tabs__item--active":o===n}),children:t??n},n)}))})}function x(e){let{lazy:n,children:t,selectedValue:s}=e;const i=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===s));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,o.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function j(e){const n=g(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",M.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(x,{...n,...e})]})}function v(e){const n=(0,p.A)();return(0,f.jsx)(j,{...e,children:u(e.children)},String(n))}},89236:(e,n,t)=>{t.d(n,{A:()=>i});var o=t(19365),s=(t(96540),t(74848));function i(e){return(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(o.A,{className:"tw-rounded-md",...e})})}},27064:(e,n,t)=>{t.d(n,{A:()=>i});var o=t(11470),s=(t(96540),t(74848));function i(e){return(0,s.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,s.jsx)(o.A,{...e})})}},3462:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/enable_mod_management-d7351b002e16e9781646be8381e57e12.png"},55371:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/fetch_external_updates-815fb53cb41b2a7529c4ab0f6484f5dc.png"},51314:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/query_user_installations-719f403a60b8a2a20541dd4d547fefd9.png"},567:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/query_user_subscriptions-c0a465f3e522e5bbb9f8d0a28ddd47f5.png"},22095:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/subscribe_to_mod-9f9f05d9c9ffd8d4ca2d2f6d383f25a3.png"},28269:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/unsubscribe_from_mod-ad13b0ee52b1ada4ab5713683a5e42f2.png"},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>r});var o=t(96540);const s={},i=o.createContext(s);function a(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/b84ad1c9.ddb378a0.js b/Doc/assets/js/b84ad1c9.ddb378a0.js new file mode 100644 index 00000000..1f37e023 --- /dev/null +++ b/Doc/assets/js/b84ad1c9.ddb378a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[4101],{97949:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>m,frontMatter:()=>r,metadata:()=>l,toc:()=>u});var s=t(74848),o=t(28453),a=t(27064),i=t(89236);const r={id:"ue-mod-subscriptions",title:"Mod Subscriptions & Management",slug:"/unreal/getting-started/mod-subscriptions",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/mod-subscriptions.mdx"},d=void 0,l={id:"getting-started/ue-mod-subscriptions",title:"Mod Subscriptions & Management",description:"So you\u2019ve shown the user some mods, and they've picked one they\u2019d like to install. How do you begin the installation process? Once the mod is installed, how do you know what files to load into memory?",source:"@site/public/en-us/getting-started/subscriptions.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/mod-subscriptions",permalink:"/unreal/getting-started/mod-subscriptions",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/mod-subscriptions.mdx",tags:[],version:"current",frontMatter:{id:"ue-mod-subscriptions",title:"Mod Subscriptions & Management",slug:"/unreal/getting-started/mod-subscriptions",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/mod-subscriptions.mdx"},sidebar:"sidebar",previous:{title:"Browsing Mods",permalink:"/unreal/getting-started/browsing-mods"},next:{title:"In-Game Mod Submission",permalink:"/unreal/getting-started/submit-mods"}},c={},u=[{value:"Mod subscriptions",id:"mod-subscriptions",level:2},{value:"External subscription changes",id:"external-subscription-changes",level:2},{value:"Checking the user subscription list",id:"checking-the-user-subscription-list",level:2},{value:"Installation management",id:"installation-management",level:2},{value:"Retrieving mod directory paths for loading",id:"retrieving-mod-directory-paths-for-loading",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["So you\u2019ve ",(0,s.jsx)(n.a,{href:"browsing-mods",children:"shown the user some mods"}),", and they've picked one they\u2019d like to install. How do you begin the installation process? Once the mod is installed, how do you know what files to load into memory?"]}),"\n",(0,s.jsx)(n.h2,{id:"mod-subscriptions",children:"Mod subscriptions"}),"\n",(0,s.jsxs)(n.p,{children:["Users indicate they want to install a mod by ",(0,s.jsx)(n.strong,{children:"subscribing"})," to it. Subscriptions are stored on the mod.io servers and are associated with a user\u2019s mod.io account, so subscribed mods for a given game will be installed to all devices where a user logs into mod.io for that game. Similarly, when a user ",(0,s.jsx)(n.strong,{children:"unsubscribes"})," from a mod, that mod will be uninstalled from every device they\u2019re logged into mod.io with for that game."]}),"\n",(0,s.jsxs)(n.p,{children:["Subscriptions are managed with calls to either ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#subscribetomodasync",children:(0,s.jsx)(n.code,{children:"SubscribeToModAsync"})})," or ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#unsubscribefrommodasync",children:(0,s.jsx)(n.code,{children:"UnsubscribeFromModAsync"})})," containing the desired ",(0,s.jsx)(n.code,{children:"ModioModID"})," and a delegate to receive the status of the request."]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["To subscribe or unsubscribe from a mod, ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#enablemodmanagement",children:(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"EnableModManagement"})})})," ",(0,s.jsx)(n.em,{children:"must"})," be called beforehand."]})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"SubscribeToModAsync"})," also takes a bool indicating whether or not to to subscribe to any and all dependencies for the given ",(0,s.jsx)(n.code,{children:"ModioModID"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["When dependencies are included in the ",(0,s.jsx)(n.code,{children:"SubscribeToModAsync"})," call, they will ",(0,s.jsx)(n.em,{children:"not"})," download automatically. ",(0,s.jsxs)(n.strong,{children:["Only the primary mod specified by ",(0,s.jsx)(n.code,{children:"ModioModID"})," will download automatically."]})," To download all subscribed content including dependencies, call ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#fetchexternalupdatesasync",children:(0,s.jsx)(n.code,{children:"FetchExternalUpdatesAsync"})})," after ",(0,s.jsx)(n.code,{children:"SubscribeToModAsync"})," successfully completes."]})}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsxs)(i.A,{value:"blueprint",label:"Blueprint",children:[(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"subscribe_to_mod",src:t(84272).A+"",width:"785",height:"393"})}),(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"unsubscribe_from_mod",src:t(66738).A+"",width:"785",height:"393"})})]}),(0,s.jsx)(i.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::SubscribeToMod(FModioModID ModToSubscribeTo, bool IncludeDependencies)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->SubscribeToModAsync(ModId, IncludeDependencies, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnSubscribeToModComplete, ModId));\n }\n}\n\nvoid UModioManagerSubsystem::OnSubscribeToModComplete(FModioErrorCode ErrorCode, FModioModID ModId)\n{\n if (!ErrorCode)\n {\n \t// Indicate success to your user. This ModId's files will begin installing.\n \t// Call FetchExternalUpdatesAsync if dependencies were included \n }\n}\n\nvoid UModioManagerSubsystem::UnsubscribeFromMod(FModioModID ModId)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->UnsubscribeFromModAsync(ModId, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnUnsubscribeFromModComplete, ModId));\n }\n}\n\nvoid UModioManagerSubsystem::OnUnsubscribeFromModComplete(FModioErrorCode ErrorCode, FModioModId ModId)\n{\n if (!ErrorCode)\n {\n \t// Indicate success to your user. This ModID's files will begin uninstalling.\n }\n}\n"})})})]}),"\n",(0,s.jsx)(n.h2,{id:"external-subscription-changes",children:"External subscription changes"}),"\n",(0,s.jsx)(n.p,{children:"Because mod.io's services are available via our website, users can manage their subscriptions outside of your application. This means that we need to be able to query the server for any external subscription changes."}),"\n",(0,s.jsxs)(n.p,{children:["Call ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#fetchexternalupdatesasync",children:(0,s.jsx)(n.code,{children:"FetchExternalUpdatesAsync"})})," to synchronise the server state with the plugin\u2019s local subscriptions. Any required installations or uninstallations based on the updated user subscriptions will be processed automatically."]}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(i.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"fetch_external_updates",src:t(34796).A+"",width:"525",height:"315"})})}),(0,s.jsx)(i.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-cpp",children:"\nvoid UModioManagerSubsystem::FetchExternalUpdates()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->FetchExternalUpdatesAsync(FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnFetchExternalUpdatesComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnFetchExternalUpdatesComplete(FModioErrorCode ErrorCode)\n{\n // error handling etc.\n}\n\n"})})})]}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:["Call ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#fetchexternalupdatesasync",children:(0,s.jsx)(n.code,{children:"FetchExternalUpdatesAsync"})})," sparingly, only when required to ensure that the local state is up-to-date such as on game start-up or based on user input (i.e. as a button on your UI). It should ",(0,s.jsx)(n.strong,{children:"NOT"})," be called on tick."]})}),"\n",(0,s.jsx)(n.h2,{id:"checking-the-user-subscription-list",children:"Checking the user subscription list"}),"\n",(0,s.jsxs)(n.p,{children:["To see which mods the user has subscribed to, call ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#query-user-subscriptions",children:(0,s.jsx)(n.code,{children:"QueryUserSubscriptions"})}),". This retrieves a ",(0,s.jsx)(n.code,{children:"TMap"})," of ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#modiomodcollectionentry",children:(0,s.jsx)(n.code,{children:"ModioModCollectionEntry"})})," objects, one for each subscribed mod. Each ",(0,s.jsx)(n.code,{children:"ModioModCollectionEntry"})," object contains the mod\u2019s state, profile information, ID and more."]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["This collection includes mods that are still in the process of being installed! Make sure to check the result of ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#get-mod-state",children:(0,s.jsx)(n.code,{children:"GetModState"})})," before attempting to load files from the mods in this collection. Alternatively, use ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#query-user-installations",children:(0,s.jsx)(n.code,{children:"QueryUserInstallations"})})," as described in ",(0,s.jsx)(n.a,{href:"#retrieving-mod-directory-paths-for-loading",children:(0,s.jsx)(n.strong,{children:"Retrieving mod directory paths for loading"})}),"."]})}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(i.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"query_user_subscriptions",src:t(68260).A+"",width:"754",height:"338"})})}),(0,s.jsx)(i.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::QueryUserSubscriptions()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tTMap SubscribedMods = Subsystem->QueryUserSubscriptions();\n \t// Do something with SubscribedMods e.g. display on a UI\n }\n}\n"})})})]}),"\n",(0,s.jsx)(n.h2,{id:"installation-management",children:"Installation management"}),"\n",(0,s.jsxs)(n.p,{children:["So a subscription marks a mod as requiring installation, and an unsubscription indicates uninstallation, but how do you actually control when the plugin ",(0,s.jsx)(n.strong,{children:"does"})," those things? After all, you don\u2019t want a mod to be uninstalled after your main program has loaded those files into memory, locking them from deletion. Likewise, you probably don\u2019t want to be using networking or processor resources during gameplay for downloading mods. To give you control over when these processes occur without forcing you to shut down the plugin, you can call ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#enablemodmanagement",children:(0,s.jsx)(n.code,{children:"EnableModManagement"})})," and ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#disable-mod-management",children:(0,s.jsx)(n.code,{children:"DisableModManagement"})}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["To notify your users when a mod is finished installing or updating, ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#enablemodmanagement",children:(0,s.jsx)(n.code,{children:"EnableModManagement"})})," asks you to provide it with a callback. This callback will be invoked ",(0,s.jsx)(n.strong,{children:"every time"})," a ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#modiomodmanagementevent",children:(0,s.jsx)(n.code,{children:"ModioModManagementEvent"})})," occurs i.e. whenever a mod is installed, updated, uninstalled, or uploaded by the plugin\u2019s internal event loop. This behavior persists until a corresponding call to ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#disable-mod-management",children:(0,s.jsx)(n.code,{children:"DisableModManagement"})})," or ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#shutdownasync",children:(0,s.jsx)(n.code,{children:"ShutdownAsync"})})," is made."]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/unreal/refdocs/#enablemodmanagement",children:(0,s.jsx)(n.code,{children:"EnableModManagement"})})," is not an async function. It does not end with the ",(0,s.jsx)(n.code,{children:"*Async"})," suffix. Its callback operates differently to asynchronous result callbacks used elsewhere in the mod.io plugin."]})}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(i.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"enable_mod_management",src:t(94787).A+"",width:"784",height:"539"})})}),(0,s.jsx)(i.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::EnableModManagement()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->EnableModManagement(FOnModManagementDelegateFast::CreateUObject(this, &UModioManagerSubsystem::ModManagementCallback));\n }\n}\n\nvoid UModioManagerSubsystem::ModManagementCallback(FModioModManagementEvent ModManagementEvent)\n{\n if (ModManagementEvent.Status)\n {\n \t// error handling\n }\n switch(ModManagementEvent.Event)\n {\n \tcase EModioModManagementEventType::BeginInstall:\n \tcase EModioModManagementEventType::BeginUninstall:\n \tcase EModioModManagementEventType::BeginUpdate:\n \tcase EModioModManagementEventType::BeginUpload:\n \t\tUE_LOG(LogModioGame, Log, TEXT("Begin processing Mod %s"), *ModManagementEvent.ID.ToString());\n \t\tbreak;\n \tcase EModioModManagementEventType::Installed:\n \t\tUE_LOG(LogModioGame, Log, TEXT("Received an Installed event for Mod %s"), *ModManagementEvent.ID.ToString());\n \t\tbreak;\n \tcase EModioModManagementEventType::Uninstalled: \n \t\tUE_LOG(LogModioGame, Log, TEXT("Received an Uninstalled event for Mod %s"), *ModManagementEvent.ID.ToString());\n \t\tbreak;\n \tcase EModioModManagementEventType::Updated:\n \t\tUE_LOG(LogModioGame, Log, TEXT("Received an Updated event for Mod %s"), *ModManagementEvent.ID.ToString());\n \t\tbreak;\n \tcase EModioModManagementEventType::Uploaded:\n \t\tUE_LOG(LogModioGame, Log, TEXT("Received an Uploaded event for Mod %s"), *ModManagementEvent.ID.ToString());\n \t\tbreak;\n \tdefault:;\n }\n}\n'})})})]}),"\n",(0,s.jsxs)(n.p,{children:["While mod management is enabled, the plugin assumes that it has the ability to make changes to the filesystem, including deleting mods that the user has no longer subscribed to. As a result you should make sure that you don\u2019t have any open handles to files inside the mod directories when you call ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#enablemodmanagement",children:(0,s.jsx)(n.code,{children:"EnableModManagement"})}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["When you want to be able to freely open files in the mod directories, call ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#disable-mod-management",children:(0,s.jsx)(n.code,{children:"DisableModManagement"})}),". The plugin will finish the current operation but will not continue any others."]}),"\n",(0,s.jsxs)(n.p,{children:["Call ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#is-mod-management-busy",children:(0,s.jsx)(n.code,{children:"IsModManagementBusy"})})," to see if mod management is currently processing a mod."]}),"\n",(0,s.jsx)(a.A,{"group-id":"languages",children:(0,s.jsx)(i.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::DisableModManagement()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tif (!Subsystem->IsModManagementBusy())\n \t{\n \t\tSubsystem->DisableModManagement();\n \t}\n }\n}\n"})})})}),"\n",(0,s.jsx)(n.h3,{id:"retrieving-mod-directory-paths-for-loading",children:"Retrieving mod directory paths for loading"}),"\n",(0,s.jsx)(n.p,{children:"So now we have the user picking mods and marking them for installation, we\u2019re enabling mod management at a point where we don\u2019t mind the plugin changing the filesystem, and mods are being installed by the plugin. We now need to know where they are on disk, otherwise you can\u2019t load them into your game!"}),"\n",(0,s.jsxs)(n.p,{children:["The easiest way to do this is by using ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#query-user-installations",children:(0,s.jsx)(n.code,{children:"QueryUserInstallations"})}),". This function returns a ",(0,s.jsx)(n.code,{children:"TMap"})," of ",(0,s.jsx)(n.a,{href:"/unreal/refdocs/#modiomodcollectionentry",children:(0,s.jsx)(n.code,{children:"ModioModCollectionEntry"})})," objects that can be queried for folder paths to use for loading a mod's files into your game. ",(0,s.jsx)(n.code,{children:"QueryUserInstallations"})," also allows you to specify whether or not to include outdated mods."]}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(i.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::GetInstalledMods()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tTMap InstalledMods = Subsystem->QueryUserInstallations(false);\n \t\n \t// Do something with each installed mod, ie adding paths/loading the content appropriately\n }\n}\n"})})}),(0,s.jsx)(i.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"query_user_installations",src:t(68413).A+"",width:"1071",height:"248"})})})]})]})}function m(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},19365:(e,n,t)=>{t.d(n,{A:()=>i});t(96540);var s=t(18215);const o={tabItem:"tabItem_Ymn6"};var a=t(74848);function i(e){let{children:n,hidden:t,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,s.A)(o.tabItem,i),hidden:t,children:n})}},11470:(e,n,t)=>{t.d(n,{A:()=>v});var s=t(96540),o=t(18215),a=t(23104),i=t(56347),r=t(205),d=t(57485),l=t(31682),c=t(70679);function u(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,s.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:s,default:o}}=e;return{value:n,label:t,attributes:s,default:o}}))}(t);return function(e){const n=(0,l.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function b(e){let{queryString:n=!1,groupId:t}=e;const o=(0,i.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,d.aZ)(a),(0,s.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(o.location.search);n.set(a,e),o.replace({...o.location,search:n.toString()})}),[a,o])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,a=h(e),[i,d]=(0,s.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:a}))),[l,u]=b({queryString:t,groupId:o}),[g,p]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,a]=(0,c.Dv)(t);return[o,(0,s.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:o}),f=(()=>{const e=l??g;return m({value:e,tabValues:a})?e:null})();(0,r.A)((()=>{f&&d(f)}),[f]);return{selectedValue:i,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),p(e)}),[u,p,a]),tabValues:a}}var p=t(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=t(74848);function M(e){let{className:n,block:t,selectedValue:s,selectValue:i,tabValues:r}=e;const d=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),c=e=>{const n=e.currentTarget,t=d.indexOf(n),o=r[t].value;o!==s&&(l(n),i(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=d.indexOf(e.currentTarget)+1;n=d[t]??d[0];break}case"ArrowLeft":{const t=d.indexOf(e.currentTarget)-1;n=d[t]??d[d.length-1];break}}n?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:r.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>d.push(e),onKeyDown:u,onClick:c,...a,className:(0,o.A)("tabs__item",f.tabItem,a?.className,{"tabs__item--active":s===n}),children:t??n},n)}))})}function x(e){let{lazy:n,children:t,selectedValue:o}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===o));return e?(0,s.cloneElement)(e,{className:"margin-top--md"}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,s.cloneElement)(e,{key:n,hidden:e.props.value!==o})))})}function j(e){const n=g(e);return(0,y.jsxs)("div",{className:(0,o.A)("tabs-container",f.tabList),children:[(0,y.jsx)(M,{...n,...e}),(0,y.jsx)(x,{...n,...e})]})}function v(e){const n=(0,p.A)();return(0,y.jsx)(j,{...e,children:u(e.children)},String(n))}},89236:(e,n,t)=>{t.d(n,{A:()=>a});var s=t(19365),o=(t(96540),t(74848));function a(e){return(0,o.jsx)(o.Fragment,{children:(0,o.jsx)(s.A,{className:"tw-rounded-md",...e})})}},27064:(e,n,t)=>{t.d(n,{A:()=>a});var s=t(11470),o=(t(96540),t(74848));function a(e){return(0,o.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,o.jsx)(s.A,{...e})})}},94787:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/enable_mod_management-d7351b002e16e9781646be8381e57e12.png"},34796:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/fetch_external_updates-815fb53cb41b2a7529c4ab0f6484f5dc.png"},68413:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/query_user_installations-719f403a60b8a2a20541dd4d547fefd9.png"},68260:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/query_user_subscriptions-c0a465f3e522e5bbb9f8d0a28ddd47f5.png"},84272:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/subscribe_to_mod-9f9f05d9c9ffd8d4ca2d2f6d383f25a3.png"},66738:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/unsubscribe_from_mod-ad13b0ee52b1ada4ab5713683a5e42f2.png"},28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>r});var s=t(96540);const o={},a=s.createContext(o);function i(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/c5d35168.34c70772.js b/Doc/assets/js/c5d35168.34c70772.js deleted file mode 100644 index ae1f5d59..00000000 --- a/Doc/assets/js/c5d35168.34c70772.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8156],{69285:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>u,toc:()=>d});var i=t(74848),s=t(28453),a=t(27064),r=t(89236);const o={id:"ue-user-authentication",title:"User Authentication",slug:"/unreal/getting-started/user-authentication",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/user-authentication.mdx"},l=void 0,u={id:"getting-started/ue-user-authentication",title:"User Authentication",description:"Best practices",source:"@site/public/en-us/getting-started/user-authentication.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/user-authentication",permalink:"/unreal/getting-started/user-authentication",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/user-authentication.mdx",tags:[],version:"current",frontMatter:{id:"ue-user-authentication",title:"User Authentication",slug:"/unreal/getting-started/user-authentication",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/user-authentication.mdx"},sidebar:"sidebar",previous:{title:"Initialization & Teardown",permalink:"/unreal/getting-started/initialization"},next:{title:"Browsing Mods",permalink:"/unreal/getting-started/browsing-mods"}},c={},d=[{value:"Best practices",id:"best-practices",level:2},{value:"Recommended flow",id:"recommended-flow",level:3},{value:"Terms & user consent",id:"terms--user-consent",level:2},{value:"Authentication methods",id:"authentication-methods",level:2},{value:"Email authentication",id:"email-authentication",level:3},{value:"Requesting an authentication code",id:"requesting-an-authentication-code",level:4},{value:"Submitting an authentication code",id:"submitting-an-authentication-code",level:4},{value:"Single sign-on authentication",id:"single-sign-on-authentication",level:3},{value:"Using the Unreal Online Subsystem",id:"using-the-unreal-online-subsystem",level:2},{value:"Token Lifetime & Re-Authentication",id:"token-lifetime--re-authentication",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"best-practices",children:"Best practices"}),"\n",(0,i.jsxs)(n.p,{children:["We recommend creating a new game-instance based subsystem (e.g. ",(0,i.jsx)(n.code,{children:"ModioManagerSubsystem"}),") that depends on ",(0,i.jsx)(n.code,{children:"ModioSubsystem"}),", and is responsible for managing the full initialization and authentication flow for your game."]}),"\n",(0,i.jsx)(n.h3,{id:"recommended-flow",children:"Recommended flow"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Create a subsystem to manage mod.io initialization and authentication."}),"\n",(0,i.jsxs)(n.li,{children:["Perform ",(0,i.jsx)(n.a,{href:"#using-the-unreal-online-subsystem",children:"Online Subsystem (OSS) login"})," in your subsystem's ",(0,i.jsx)(n.code,{children:"Initialize"})," function to ensure you have a valid platform auth token ready when its time to authenticate to mod.io using ",(0,i.jsx)(n.a,{href:"#single-sign-on-authentication",children:"single sign-on (SSO)"}),".","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Log in with the online identity provider."}),"\n",(0,i.jsx)(n.li,{children:"On success, get a linked account token for the current user."}),"\n",(0,i.jsx)(n.li,{children:"On success, get an authentication token from the linked account or from the online identity."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"initialization",children:"Initialize"})," the mod.io plugin with the required environment parameters for the current platform."]}),"\n",(0,i.jsxs)(n.li,{children:["Display the mod.io ",(0,i.jsx)(n.a,{href:"/terms/",children:"Terms of Service"}),". Ensure they are accepted by the user."]}),"\n",(0,i.jsxs)(n.li,{children:["Authenticate the user using ",(0,i.jsx)(n.a,{href:"#single-sign-on-authentication",children:"SSO"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"If the Online Subsystem login fails at any point in the above process, fall back to simply initializing the plugin and offer email authentication as an alternative."})}),"\n",(0,i.jsx)(n.h2,{id:"terms--user-consent",children:"Terms & user consent"}),"\n",(0,i.jsxs)(n.p,{children:["Users must accept the mod.io Terms of Service before using any mod.io services. The Terms of Service can be fetched from mod.io using ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_GetTermsOfUseAsync",children:(0,i.jsx)(n.code,{children:"GetTermsOfUseAsync"})}),". Before attempting authentication, ensure these terms are displayed to and accepted by the user."]}),"\n",(0,i.jsxs)(n.p,{children:["See our full ",(0,i.jsx)(n.a,{href:"/terms/",children:"Terms & User Consent"})," documentation for further details."]}),"\n",(0,i.jsx)(n.h2,{id:"authentication-methods",children:"Authentication methods"}),"\n",(0,i.jsx)(n.p,{children:"The mod.io Unreal Engine plugin provides two ways for users to create an account to use the service: email authentication, and single sign-on (SSO) through an external authentication partner."}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsx)(n.p,{children:"For the best user experience, we recommend using SSO wherever possible."})}),"\n",(0,i.jsx)(n.h3,{id:"email-authentication",children:"Email authentication"}),"\n",(0,i.jsx)(n.p,{children:"Users can authenticate to mod.io with just an email address. This involves:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Requesting a one-time authentication code be sent from mod.io to an email address provided by the user."}),"\n",(0,i.jsx)(n.li,{children:"Submitting the received code to mod.io."}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"requesting-an-authentication-code",children:"Requesting an authentication code"}),"\n",(0,i.jsxs)(n.p,{children:["Request a one-time authentication code by calling ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_RequestEmailAuthCodeAsync",children:(0,i.jsx)(n.code,{children:"RequestEmailAuthCodeAsync"})}),". Pass in a user-provided email address as the first argument."]}),"\n",(0,i.jsxs)(a.A,{groupId:"languages",children:[(0,i.jsx)(r.A,{value:"cpp",label:"C++",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::RequestEmailAuthCode(const FString &EmailAddress)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->RequestEmailAuthCodeAsync(FModioEmailAddress(*EmailAddress), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnRequestEmailAuthCodeComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnRequestEmailAuthCodeComplete(FModioErrorCode ErrorCode)\n{\n UE_LOG(LogModioGame, Log, TEXT("Email auth code request complete with result: %s"), *ErrorCode.GetErrorMessage());\n}\n'})})}),(0,i.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"request_email_auth_code",src:t(98069).A+"",width:"1137",height:"597"})})})]}),"\n",(0,i.jsxs)(n.p,{children:["When your callback is invoked, inspect the ",(0,i.jsx)(n.code,{children:"ModioErrorCode"})," for a successful result. On success, prompt the user to check their emails and enter the authentication code they have received into your game."]}),"\n",(0,i.jsx)(n.h4,{id:"submitting-an-authentication-code",children:"Submitting an authentication code"}),"\n",(0,i.jsxs)(n.p,{children:["To finalize the user's authentication, submit the code they have entered to mod.io by calling ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_AuthenticateUserEmailAsync",children:(0,i.jsx)(n.code,{children:"AuthenticateUserEmailAsync"})}),". Pass the user's code in as the first argument."]}),"\n",(0,i.jsxs)(a.A,{groupId:"languages",children:[(0,i.jsx)(r.A,{value:"cpp",label:"C++",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::AuthenticateUserEmail(const FString& AuthCode)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->AuthenticateUserEmailAsync(FModioEmailAuthCode(*AuthCode), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnAuthenticateUserEmailComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnAuthenticateUserEmailComplete(FModioErrorCode ErrorCode)\n{\n UE_LOG(LogModioGame, Log, TEXT("Email auth code submission complete with result: %s"), *ErrorCode.GetErrorMessage());\n}\n'})})}),(0,i.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"authenticate_user_email",src:t(534).A+"",width:"1170",height:"565"})})})]}),"\n",(0,i.jsxs)(n.p,{children:["When your callback is invoked, inspect the ",(0,i.jsx)(n.code,{children:"ModioErrorCode"})," for a successful result. On success, user authentication is complete."]}),"\n",(0,i.jsx)(n.h3,{id:"single-sign-on-authentication",children:"Single sign-on authentication"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io Unreal Engine plugin features single sign-on (SSO) authentication from a number of ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_emodioauthenticationprovider",children:"external providers"}),". These include:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/gdk/#authentication",children:"Xbox Live"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/steam/authentication",children:"Steam"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/gog/authentication",children:"GOG Galaxy"})}),"\n",(0,i.jsx)(n.li,{children:"itch.io"}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/switch/#authentication",children:"Nintendo Switch"})}),"\n",(0,i.jsx)(n.li,{children:"Discord"}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/playstation/#authentication",children:"PlayStation\u2122Network"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/epic/authentication",children:"Epic Online Services"})}),"\n",(0,i.jsx)(n.li,{children:"Oculus"}),"\n",(0,i.jsx)(n.li,{children:"OpenID"}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/google/authentication",children:"Google"})}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["OpenID is a premium feature. If you are interested in mod.io premium features, please contact ",(0,i.jsx)(n.a,{href:"mailto:developers@mod.io",children:"developers@mod.io"}),"."]})}),"\n",(0,i.jsxs)(n.p,{children:["Each platform has their own requirements and prerequisites for performing SSO. Platform-specific authentication can be found in the respective ",(0,i.jsx)(n.a,{href:"/platforms/",children:"platform documentation"}),". SSO is performed by calling ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_AuthenticateUserExternalAsync",children:(0,i.jsx)(n.code,{children:"AuthenticateUserExternalAsync"})}),". This function takes a ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_modioauthenticationparams",children:(0,i.jsx)(n.code,{children:"ModioAuthenticationParams"})})," containing provider-specific parameters, and a ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_emodioauthenticationprovider",children:(0,i.jsx)(n.code,{children:"ModioAuthenticationProvider"})})," indicating the provider you're using."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"#using-the-unreal-online-subsystem",children:"Unreal Engine's Online Subsystem"})," provides a convenient way to get a token for ",(0,i.jsx)(n.code,{children:"ModioAuthenticationParams.AuthToken"}),". ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#GetDefaultAuthProviderForCurrentPlatform",children:(0,i.jsx)(n.code,{children:"GetDefaultAuthProviderForCurrentPlatform"})})," can be used to get the default provider for the current platform."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"The plugin will automatically URL encode parameters (such as the auth token) when making the request."})}),"\n",(0,i.jsxs)(a.A,{groupId:"languages",children:[(0,i.jsx)(r.A,{value:"cpp",label:"C++",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::AuthenticateWithSSO(const FModioAuthenticationParams& AuthParams)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->AuthenticateUserExternalAsync(AuthParams, UModioPlatformHelpersLibrary::GetDefaultAuthProviderForCurrentPlatform(), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::AuthenticateUserExternalComplete));\n }\n}\n\nvoid UModioManagerSubsystem::AuthenticateUserExternalComplete(FModioErrorCode ErrorCode)\n{\n UE_LOG(LogModioGame, Log, TEXT("SSO complete with result: %s"), *ErrorCode.GetErrorMessage());\n}\n'})})}),(0,i.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"authenticate_user_email",src:t(66309).A+"",width:"1174",height:"681"})})})]}),"\n",(0,i.jsx)(n.h2,{id:"using-the-unreal-online-subsystem",children:"Using the Unreal Online Subsystem"}),"\n",(0,i.jsxs)(n.p,{children:["Since Unreal Engine 5.2, most of the authentication methods supported by mod.io are abstracted by Unreal's ",(0,i.jsx)(n.a,{href:"https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/OnlineSubsystem/IOnlineSubsystem",children:"Online Subsystem"}),". Below are some code snippets demonstrating the flow to get a linked account token from Unreal's Online Subsystem."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Create a subsystem to manage mod.io initialization and authentication that depends on the ",(0,i.jsx)(n.code,{children:"ModioSubsystem"}),". During your subsystem's initialization, perform an Online Subsystem (OSS) login. This guarantees you will have a valid platform auth token ready when needed for mod.io SSO authentication."]}),"\n"]}),"\n",(0,i.jsx)(a.A,{"group-id":"languages",children:(0,i.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:"const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::GetByPlatform();\nif (OnlineSubsystem != nullptr && OnlineSubsystem->GetIdentityInterface() != nullptr)\n{\n // Get the Identity interface from our OnlineSubsystem and perform login\n const IOnlineIdentityPtr OnlineIdentity = OnlineSubsystem->GetIdentityInterface();\n OnlineIdentity->AddOnLoginCompleteDelegate_Handle(\n \t0, FOnLoginCompleteDelegate::CreateLambda(\n \t\t [this](int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error) {\n \t\t\t this->OnSubsystemLoginComplete(LocalUserNum, bWasSuccessful, UserId, Error);\n \t\t }));\n OnlineIdentity->Login(0, FOnlineAccountCredentials());\n}\nelse\n{\n // If we don't have a valid OnlineSubsystem, just initialize the mod.io plugin\n InitializeModio();\n}\n"})})})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"After a successful OSS login, request the linked account token."}),"\n"]}),"\n",(0,i.jsx)(a.A,{"group-id":"languages",children:(0,i.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::OnSubsystemLoginComplete(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error)\n{\n if (bWasSuccessful)\n {\n \tauto OnlineIdentity = IOnlineSubsystem::GetByPlatform()->GetIdentityInterface();\n \tOnlineIdentity->GetLinkedAccountAuthToken(0, FString(), IOnlineIdentity::FOnGetLinkedAccountAuthTokenCompleteDelegate::CreateUObject(this, &UModioManagerSubsystem::OnGetLinkedAccountTokenComplete)); \n }\n}\n"})})})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["On success, the callback received from ",(0,i.jsx)(n.code,{children:"GetLinkedAccountAuthToken"})," will contain a token that you can use to perform SSO. This will contain either a byte array ",(0,i.jsx)(n.code,{children:"TokenData"})," (e.g. for Steam SSO) or ",(0,i.jsx)(n.code,{children:"TokenString"})," for a plaintext string. These need to be handled appropriately."]}),"\n"]}),"\n",(0,i.jsx)(a.A,{"group-id":"languages",children:(0,i.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::OnGetLinkedAccountTokenComplete(int LocalUserNum, bool bWasSuccessful, const FExternalAuthToken& AuthToken)\n{\n if (AuthToken.IsValid())\n {\n \tif (AuthToken.HasTokenData())\n \t{\n \t\tAuthTokenString = FBase64::Encode(AuthToken.TokenData);\t\t\n \t} \n \telse if (AuthToken.HasTokenString())\n \t{\n \t\tAuthTokenString = AuthToken.TokenString;\n \t}\n }\n}\n"})})})}),"\n",(0,i.jsx)(n.h2,{id:"token-lifetime--re-authentication",children:"Token Lifetime & Re-Authentication"}),"\n",(0,i.jsxs)(n.p,{children:["By default, tokens issued via email token exchange have a lifetime of 1 year. You can verify that a user has been successfully authenticated with ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#K2_VerifyUserAuthenticationAsync",children:(0,i.jsx)(n.code,{children:"VerifyUserAuthenticationAsync"})}),"."]}),"\n",(0,i.jsx)(n.p,{children:"If a user is not authenticated for any reason (e.g. their token has been invalidated by changing their password, or their profile data has been removed from their device) then you should prompt them to re-authenticate."})]})}function m(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},19365:(e,n,t)=>{t.d(n,{A:()=>r});t(96540);var i=t(18215);const s={tabItem:"tabItem_Ymn6"};var a=t(74848);function r(e){let{children:n,hidden:t,className:r}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,i.A)(s.tabItem,r),hidden:t,children:n})}},11470:(e,n,t)=>{t.d(n,{A:()=>S});var i=t(96540),s=t(18215),a=t(23104),r=t(56347),o=t(205),l=t(57485),u=t(31682),c=t(70679);function d(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:i,default:s}}=e;return{value:n,label:t,attributes:i,default:s}}))}(t);return function(e){const n=(0,u.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const s=(0,r.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(a),(0,i.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(s.location.search);n.set(a,e),s.replace({...s.location,search:n.toString()})}),[a,s])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,a=h(e),[r,l]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=t.find((e=>e.default))??t[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:a}))),[u,d]=p({queryString:t,groupId:s}),[g,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,a]=(0,c.Dv)(t);return[s,(0,i.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:s}),b=(()=>{const e=u??g;return m({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{b&&l(b)}),[b]);return{selectedValue:r,selectValue:(0,i.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),f(e)}),[d,f,a]),tabValues:a}}var f=t(92303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(74848);function y(e){let{className:n,block:t,selectedValue:i,selectValue:r,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,a.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),s=o[t].value;s!==i&&(u(n),r(s))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>l.push(e),onKeyDown:d,onClick:c,...a,className:(0,s.A)("tabs__item",b.tabItem,a?.className,{"tabs__item--active":i===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:s}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=a.find((e=>e.props.value===s));return e?(0,i.cloneElement)(e,{className:"margin-top--md"}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function v(e){const n=g(e);return(0,x.jsxs)("div",{className:(0,s.A)("tabs-container",b.tabList),children:[(0,x.jsx)(y,{...n,...e}),(0,x.jsx)(j,{...n,...e})]})}function S(e){const n=(0,f.A)();return(0,x.jsx)(v,{...e,children:d(e.children)},String(n))}},89236:(e,n,t)=>{t.d(n,{A:()=>a});var i=t(19365),s=(t(96540),t(74848));function a(e){return(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(i.A,{className:"tw-rounded-md",...e})})}},27064:(e,n,t)=>{t.d(n,{A:()=>a});var i=t(11470),s=(t(96540),t(74848));function a(e){return(0,s.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,s.jsx)(i.A,{...e})})}},534:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/authenticate_user_email-d2b0b6de82e9ce9673d7c15f3d96f372.png"},66309:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/authenticate_user_external-d0c4154affa4cf479cbe902c72445329.png"},98069:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/request_email_auth_code-8c01afd7910450ea8f357c12db8fbf78.png"},28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var i=t(96540);const s={},a=i.createContext(s);function r(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/c5d35168.d3253ce3.js b/Doc/assets/js/c5d35168.d3253ce3.js new file mode 100644 index 00000000..f1f4220d --- /dev/null +++ b/Doc/assets/js/c5d35168.d3253ce3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8156],{69285:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>u,toc:()=>d});var i=t(74848),a=t(28453),s=t(27064),r=t(89236);const o={id:"ue-user-authentication",title:"User Authentication",slug:"/unreal/getting-started/user-authentication",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/user-authentication.mdx"},l=void 0,u={id:"getting-started/ue-user-authentication",title:"User Authentication",description:"Best practices",source:"@site/public/en-us/getting-started/user-authentication.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/user-authentication",permalink:"/unreal/getting-started/user-authentication",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/user-authentication.mdx",tags:[],version:"current",frontMatter:{id:"ue-user-authentication",title:"User Authentication",slug:"/unreal/getting-started/user-authentication",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/user-authentication.mdx"},sidebar:"sidebar",previous:{title:"Initialization & Teardown",permalink:"/unreal/getting-started/initialization"},next:{title:"Browsing Mods",permalink:"/unreal/getting-started/browsing-mods"}},c={},d=[{value:"Best practices",id:"best-practices",level:2},{value:"Recommended flow",id:"recommended-flow",level:3},{value:"Terms & user consent",id:"terms--user-consent",level:2},{value:"Authentication methods",id:"authentication-methods",level:2},{value:"Email authentication",id:"email-authentication",level:3},{value:"Requesting an authentication code",id:"requesting-an-authentication-code",level:4},{value:"Submitting an authentication code",id:"submitting-an-authentication-code",level:4},{value:"Single sign-on authentication",id:"single-sign-on-authentication",level:3},{value:"Using the Unreal Online Subsystem",id:"using-the-unreal-online-subsystem",level:2},{value:"Token Lifetime & Re-Authentication",id:"token-lifetime--re-authentication",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"best-practices",children:"Best practices"}),"\n",(0,i.jsxs)(n.p,{children:["We recommend creating a new game-instance based subsystem (e.g. ",(0,i.jsx)(n.code,{children:"ModioManagerSubsystem"}),") that depends on ",(0,i.jsx)(n.code,{children:"ModioSubsystem"}),", and is responsible for managing the full initialization and authentication flow for your game."]}),"\n",(0,i.jsx)(n.h3,{id:"recommended-flow",children:"Recommended flow"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Create a subsystem to manage mod.io initialization and authentication."}),"\n",(0,i.jsxs)(n.li,{children:["Perform ",(0,i.jsx)(n.a,{href:"#using-the-unreal-online-subsystem",children:"Online Subsystem (OSS) login"})," in your subsystem's ",(0,i.jsx)(n.code,{children:"Initialize"})," function to ensure you have a valid platform auth token ready when its time to authenticate to mod.io using ",(0,i.jsx)(n.a,{href:"#single-sign-on-authentication",children:"single sign-on (SSO)"}),".","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Log in with the online identity provider."}),"\n",(0,i.jsx)(n.li,{children:"On success, get a linked account token for the current user."}),"\n",(0,i.jsx)(n.li,{children:"On success, get an authentication token from the linked account or from the online identity."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"initialization",children:"Initialize"})," the mod.io plugin with the required environment parameters for the current platform."]}),"\n",(0,i.jsxs)(n.li,{children:["Display the mod.io ",(0,i.jsx)(n.a,{href:"/terms/",children:"Terms of Service"}),". Ensure they are accepted by the user."]}),"\n",(0,i.jsxs)(n.li,{children:["Authenticate the user using ",(0,i.jsx)(n.a,{href:"#single-sign-on-authentication",children:"SSO"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"If the Online Subsystem login fails at any point in the above process, fall back to simply initializing the plugin and offer email authentication as an alternative."})}),"\n",(0,i.jsx)(n.h2,{id:"terms--user-consent",children:"Terms & user consent"}),"\n",(0,i.jsxs)(n.p,{children:["Users must accept the mod.io Terms of Service before using any mod.io services. The Terms of Service can be fetched from mod.io using ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#gettermsofuseasync",children:(0,i.jsx)(n.code,{children:"GetTermsOfUseAsync"})}),". Before attempting authentication, ensure these terms are displayed to and accepted by the user."]}),"\n",(0,i.jsxs)(n.p,{children:["See our full ",(0,i.jsx)(n.a,{href:"/terms/",children:"Terms & User Consent"})," documentation for further details."]}),"\n",(0,i.jsx)(n.h2,{id:"authentication-methods",children:"Authentication methods"}),"\n",(0,i.jsx)(n.p,{children:"The mod.io Unreal Engine plugin provides two ways for users to create an account to use the service: email authentication, and single sign-on (SSO) through an external authentication partner."}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsx)(n.p,{children:"For the best user experience, we recommend using SSO wherever possible."})}),"\n",(0,i.jsx)(n.h3,{id:"email-authentication",children:"Email authentication"}),"\n",(0,i.jsx)(n.p,{children:"Users can authenticate to mod.io with just an email address. This involves:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Requesting a one-time authentication code be sent from mod.io to an email address provided by the user."}),"\n",(0,i.jsx)(n.li,{children:"Submitting the received code to mod.io."}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"requesting-an-authentication-code",children:"Requesting an authentication code"}),"\n",(0,i.jsxs)(n.p,{children:["Request a one-time authentication code by calling ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#requestemailauthcodeasync",children:(0,i.jsx)(n.code,{children:"RequestEmailAuthCodeAsync"})}),". Pass in a user-provided email address as the first argument."]}),"\n",(0,i.jsxs)(s.A,{groupId:"languages",children:[(0,i.jsx)(r.A,{value:"cpp",label:"C++",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::RequestEmailAuthCode(const FString &EmailAddress)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->RequestEmailAuthCodeAsync(FModioEmailAddress(*EmailAddress), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnRequestEmailAuthCodeComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnRequestEmailAuthCodeComplete(FModioErrorCode ErrorCode)\n{\n UE_LOG(LogModioGame, Log, TEXT("Email auth code request complete with result: %s"), *ErrorCode.GetErrorMessage());\n}\n'})})}),(0,i.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"request_email_auth_code",src:t(46524).A+"",width:"1137",height:"597"})})})]}),"\n",(0,i.jsxs)(n.p,{children:["When your callback is invoked, inspect the ",(0,i.jsx)(n.code,{children:"ModioErrorCode"})," for a successful result. On success, prompt the user to check their emails and enter the authentication code they have received into your game."]}),"\n",(0,i.jsx)(n.h4,{id:"submitting-an-authentication-code",children:"Submitting an authentication code"}),"\n",(0,i.jsxs)(n.p,{children:["To finalize the user's authentication, submit the code they have entered to mod.io by calling ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#authenticateuseremailasync",children:(0,i.jsx)(n.code,{children:"AuthenticateUserEmailAsync"})}),". Pass the user's code in as the first argument."]}),"\n",(0,i.jsxs)(s.A,{groupId:"languages",children:[(0,i.jsx)(r.A,{value:"cpp",label:"C++",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::AuthenticateUserEmail(const FString& AuthCode)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->AuthenticateUserEmailAsync(FModioEmailAuthCode(*AuthCode), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnAuthenticateUserEmailComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnAuthenticateUserEmailComplete(FModioErrorCode ErrorCode)\n{\n UE_LOG(LogModioGame, Log, TEXT("Email auth code submission complete with result: %s"), *ErrorCode.GetErrorMessage());\n}\n'})})}),(0,i.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"authenticate_user_email",src:t(73855).A+"",width:"1170",height:"565"})})})]}),"\n",(0,i.jsxs)(n.p,{children:["When your callback is invoked, inspect the ",(0,i.jsx)(n.code,{children:"ModioErrorCode"})," for a successful result. On success, user authentication is complete."]}),"\n",(0,i.jsx)(n.h3,{id:"single-sign-on-authentication",children:"Single sign-on authentication"}),"\n",(0,i.jsxs)(n.p,{children:["The mod.io Unreal Engine plugin features single sign-on (SSO) authentication from a number of ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#EModioAuthenticationProvider",children:"external providers"}),". These include:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/gdk/#authentication",children:"Xbox Live"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/steam/authentication",children:"Steam"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/gog/authentication",children:"GOG Galaxy"})}),"\n",(0,i.jsx)(n.li,{children:"itch.io"}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/switch/#authentication",children:"Nintendo Switch"})}),"\n",(0,i.jsx)(n.li,{children:"Discord"}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/playstation/#authentication",children:"PlayStation\u2122Network"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/epic/authentication",children:"Epic Online Services"})}),"\n",(0,i.jsx)(n.li,{children:"Oculus"}),"\n",(0,i.jsx)(n.li,{children:"OpenID"}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/platforms/google/authentication",children:"Google"})}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["OpenID is a premium feature. If you are interested in mod.io premium features, please contact ",(0,i.jsx)(n.a,{href:"mailto:developers@mod.io",children:"developers@mod.io"}),"."]})}),"\n",(0,i.jsxs)(n.p,{children:["Each platform has their own requirements and prerequisites for performing SSO. Platform-specific authentication can be found in the respective ",(0,i.jsx)(n.a,{href:"/platforms/",children:"platform documentation"}),". SSO is performed by calling ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#authenticateuserexternalasync",children:(0,i.jsx)(n.code,{children:"AuthenticateUserExternalAsync"})}),". This function takes a ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#modioauthenticationparams",children:(0,i.jsx)(n.code,{children:"ModioAuthenticationParams"})})," containing provider-specific parameters, and a ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#EModioAuthenticationProvider",children:(0,i.jsx)(n.code,{children:"ModioAuthenticationProvider"})})," indicating the provider you're using."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"#using-the-unreal-online-subsystem",children:"Unreal Engine's Online Subsystem"})," provides a convenient way to get a token for ",(0,i.jsx)(n.code,{children:"ModioAuthenticationParams.AuthToken"}),". ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#get-default-auth-provider-for-current-platform",children:(0,i.jsx)(n.code,{children:"GetDefaultAuthProviderForCurrentPlatform"})})," can be used to get the default provider for the current platform."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"The plugin will automatically URL encode parameters (such as the auth token) when making the request."})}),"\n",(0,i.jsxs)(s.A,{groupId:"languages",children:[(0,i.jsx)(r.A,{value:"cpp",label:"C++",children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:'void UModioManagerSubsystem::AuthenticateWithSSO(const FModioAuthenticationParams& AuthParams)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->AuthenticateUserExternalAsync(AuthParams, UModioPlatformHelpersLibrary::GetDefaultAuthProviderForCurrentPlatform(), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::AuthenticateUserExternalComplete));\n }\n}\n\nvoid UModioManagerSubsystem::AuthenticateUserExternalComplete(FModioErrorCode ErrorCode)\n{\n UE_LOG(LogModioGame, Log, TEXT("SSO complete with result: %s"), *ErrorCode.GetErrorMessage());\n}\n'})})}),(0,i.jsx)(r.A,{value:"blueprint",label:"Blueprint",children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"authenticate_user_email",src:t(47042).A+"",width:"1174",height:"681"})})})]}),"\n",(0,i.jsx)(n.h2,{id:"using-the-unreal-online-subsystem",children:"Using the Unreal Online Subsystem"}),"\n",(0,i.jsxs)(n.p,{children:["Since Unreal Engine 5.2, most of the authentication methods supported by mod.io are abstracted by Unreal's ",(0,i.jsx)(n.a,{href:"https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/OnlineSubsystem/IOnlineSubsystem",children:"Online Subsystem"}),". Below are some code snippets demonstrating the flow to get a linked account token from Unreal's Online Subsystem."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Create a subsystem to manage mod.io initialization and authentication that depends on the ",(0,i.jsx)(n.code,{children:"ModioSubsystem"}),". During your subsystem's initialization, perform an Online Subsystem (OSS) login. This guarantees you will have a valid platform auth token ready when needed for mod.io SSO authentication."]}),"\n"]}),"\n",(0,i.jsx)(s.A,{"group-id":"languages",children:(0,i.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:"const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::GetByPlatform();\nif (OnlineSubsystem != nullptr && OnlineSubsystem->GetIdentityInterface() != nullptr)\n{\n // Get the Identity interface from our OnlineSubsystem and perform login\n const IOnlineIdentityPtr OnlineIdentity = OnlineSubsystem->GetIdentityInterface();\n OnlineIdentity->AddOnLoginCompleteDelegate_Handle(\n \t0, FOnLoginCompleteDelegate::CreateLambda(\n \t\t [this](int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error) {\n \t\t\t this->OnSubsystemLoginComplete(LocalUserNum, bWasSuccessful, UserId, Error);\n \t\t }));\n OnlineIdentity->Login(0, FOnlineAccountCredentials());\n}\nelse\n{\n // If we don't have a valid OnlineSubsystem, just initialize the mod.io plugin\n InitializeModio();\n}\n"})})})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"After a successful OSS login, request the linked account token."}),"\n"]}),"\n",(0,i.jsx)(s.A,{"group-id":"languages",children:(0,i.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::OnSubsystemLoginComplete(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error)\n{\n if (bWasSuccessful)\n {\n \tauto OnlineIdentity = IOnlineSubsystem::GetByPlatform()->GetIdentityInterface();\n \tOnlineIdentity->GetLinkedAccountAuthToken(0, FString(), IOnlineIdentity::FOnGetLinkedAccountAuthTokenCompleteDelegate::CreateUObject(this, &UModioManagerSubsystem::OnGetLinkedAccountTokenComplete)); \n }\n}\n"})})})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["On success, the callback received from ",(0,i.jsx)(n.code,{children:"GetLinkedAccountAuthToken"})," will contain a token that you can use to perform SSO. This will contain either a byte array ",(0,i.jsx)(n.code,{children:"TokenData"})," (e.g. for Steam SSO) or ",(0,i.jsx)(n.code,{children:"TokenString"})," for a plaintext string. These need to be handled appropriately."]}),"\n"]}),"\n",(0,i.jsx)(s.A,{"group-id":"languages",children:(0,i.jsx)(r.A,{value:"c++",label:"C++",default:!0,children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-cpp",children:"void UModioManagerSubsystem::OnGetLinkedAccountTokenComplete(int LocalUserNum, bool bWasSuccessful, const FExternalAuthToken& AuthToken)\n{\n if (AuthToken.IsValid())\n {\n \tif (AuthToken.HasTokenData())\n \t{\n \t\tAuthTokenString = FBase64::Encode(AuthToken.TokenData);\t\t\n \t} \n \telse if (AuthToken.HasTokenString())\n \t{\n \t\tAuthTokenString = AuthToken.TokenString;\n \t}\n }\n}\n"})})})}),"\n",(0,i.jsx)(n.h2,{id:"token-lifetime--re-authentication",children:"Token Lifetime & Re-Authentication"}),"\n",(0,i.jsxs)(n.p,{children:["By default, tokens issued via email token exchange have a lifetime of 1 year. You can verify that a user has been successfully authenticated with ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#verifyuserauthenticationasync",children:(0,i.jsx)(n.code,{children:"VerifyUserAuthenticationAsync"})}),"."]}),"\n",(0,i.jsx)(n.p,{children:"If a user is not authenticated for any reason (e.g. their token has been invalidated by changing their password, or their profile data has been removed from their device) then you should prompt them to re-authenticate."})]})}function m(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},19365:(e,n,t)=>{t.d(n,{A:()=>r});t(96540);var i=t(18215);const a={tabItem:"tabItem_Ymn6"};var s=t(74848);function r(e){let{children:n,hidden:t,className:r}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,i.A)(a.tabItem,r),hidden:t,children:n})}},11470:(e,n,t)=>{t.d(n,{A:()=>S});var i=t(96540),a=t(18215),s=t(23104),r=t(56347),o=t(205),l=t(57485),u=t(31682),c=t(70679);function d(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:i,default:a}}=e;return{value:n,label:t,attributes:i,default:a}}))}(t);return function(e){const n=(0,u.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const a=(0,r.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(s),(0,i.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function p(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=h(e),[r,l]=(0,i.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const i=t.find((e=>e.default))??t[0];if(!i)throw new Error("Unexpected error: 0 tabValues");return i.value}({defaultValue:n,tabValues:s}))),[u,d]=g({queryString:t,groupId:a}),[p,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,c.Dv)(t);return[a,(0,i.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),b=(()=>{const e=u??p;return m({value:e,tabValues:s})?e:null})();(0,o.A)((()=>{b&&l(b)}),[b]);return{selectedValue:r,selectValue:(0,i.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=t(92303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(74848);function y(e){let{className:n,block:t,selectedValue:i,selectValue:r,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,s.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),a=o[t].value;a!==i&&(u(n),r(a))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,ref:e=>l.push(e),onKeyDown:d,onClick:c,...s,className:(0,a.A)("tabs__item",b.tabItem,s?.className,{"tabs__item--active":i===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:a}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===a));return e?(0,i.cloneElement)(e,{className:"margin-top--md"}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function v(e){const n=p(e);return(0,x.jsxs)("div",{className:(0,a.A)("tabs-container",b.tabList),children:[(0,x.jsx)(y,{...n,...e}),(0,x.jsx)(j,{...n,...e})]})}function S(e){const n=(0,f.A)();return(0,x.jsx)(v,{...e,children:d(e.children)},String(n))}},89236:(e,n,t)=>{t.d(n,{A:()=>s});var i=t(19365),a=(t(96540),t(74848));function s(e){return(0,a.jsx)(a.Fragment,{children:(0,a.jsx)(i.A,{className:"tw-rounded-md",...e})})}},27064:(e,n,t)=>{t.d(n,{A:()=>s});var i=t(11470),a=(t(96540),t(74848));function s(e){return(0,a.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,a.jsx)(i.A,{...e})})}},73855:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/authenticate_user_email-d2b0b6de82e9ce9673d7c15f3d96f372.png"},47042:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/authenticate_user_external-d0c4154affa4cf479cbe902c72445329.png"},46524:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/request_email_auth_code-8c01afd7910450ea8f357c12db8fbf78.png"},28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var i=t(96540);const a={},s=i.createContext(a);function r(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/cddf829a.11002d8d.js b/Doc/assets/js/cddf829a.11002d8d.js deleted file mode 100644 index 4812878a..00000000 --- a/Doc/assets/js/cddf829a.11002d8d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8840],{64088:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>u,toc:()=>d});var s=n(74848),r=n(28453),a=n(27064),o=n(89236);const i={id:"ue-monetization",title:"Monetization",slug:"/unreal/getting-started/monetization",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/monetization.mdx"},l=void 0,u={id:"getting-started/ue-monetization",title:"Monetization",description:"The mod.io Unreal Engine Plugin supports a range of monetization features, allowing you to sell a per-game virtual currency to your players that they can use to purchase mods, with a share of the revenue split between creators and your studio. An overview of the mod.io monetization system is available here.",source:"@site/public/en-us/getting-started/monetization.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/monetization",permalink:"/unreal/getting-started/monetization",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/monetization.mdx",tags:[],version:"current",frontMatter:{id:"ue-monetization",title:"Monetization",slug:"/unreal/getting-started/monetization",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/monetization.mdx"},sidebar:"sidebar",previous:{title:"Error Handling",permalink:"/unreal/getting-started/error-handling"},next:{title:"Temporary Mod Sets",permalink:"/unreal/getting-started/temporary-mods"}},c={},d=[{value:"Initialization",id:"initialization",level:2},{value:"Getting the user's wallet",id:"getting-the-users-wallet",level:2},{value:"Querying mods",id:"querying-mods",level:2},{value:"Purchasing mods",id:"purchasing-mods",level:2},{value:"Showing user purchases",id:"showing-user-purchases",level:2},{value:"Getting a user delegation token",id:"getting-a-user-delegation-token",level:2}];function h(e){const t={a:"a",code:"code",h2:"h2",img:"img",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["The mod.io Unreal Engine Plugin supports a range of monetization features, allowing you to sell a per-game virtual currency to your players that they can use to purchase mods, with a share of the revenue split between creators and your studio. An overview of the mod.io monetization system is available ",(0,s.jsx)(t.a,{href:"/monetization/",children:"here"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["Every platform requires specific setup for monetization features to work, particularly with respect to the virtual currency configuration and API calls. The following documentation is generically applicable. Platform-specific information is available in the relevant ",(0,s.jsx)(t.a,{href:"/platforms/",children:"platform documentation section"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"initialization",children:"Initialization"}),"\n",(0,s.jsxs)(t.p,{children:["The mod.io monetization features are enabled during the onboarding process on your ",(0,s.jsx)(t.a,{href:"https://mod.io/g",children:"game profile"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["Ensure that you have set the appropriate ",(0,s.jsx)(t.code,{children:"Portal"})," when ",(0,s.jsx)(t.a,{href:"initialization",children:"initializing the plugin"}),". For instance, on Steam you must initialize with ",(0,s.jsx)(t.code,{children:"EModioPortal::Steam"})," to redeem entitlements for Steam."]}),"\n",(0,s.jsx)(t.h2,{id:"getting-the-users-wallet",children:"Getting the user's wallet"}),"\n",(0,s.jsxs)(t.p,{children:["On startup, you can make a call to ",(0,s.jsx)(t.code,{children:"UModioSubsystem::GetUserWalletBalanceAsync"})," to get the balance of the current user's wallet. If no wallet exists for the user, one will be automatically created for them. This call returns the user's wallet balance for the current game."]}),"\n",(0,s.jsxs)(t.p,{children:["The only time you need to make this call is on start-up. We recommend that you cache the value of this result in your game code rather than making consistent calls to ",(0,s.jsx)(t.code,{children:"UModioSubsystem::GetUserWalletBalanceAsync"}),", and update your local state from the return values of other calls that affect wallet balance."]}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(o.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"get_user_wallet",src:n(80814).A+"",width:"598",height:"414"})})}),(0,s.jsx)(o.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-cpp",children:"void UModioManagerSubsystem::GetUserWallet()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->GetUserWalletBalanceAsync(FOnGetUserWalletBalanceDelegate::CreateUObject(this, &UModioManagerSubsystem::OnGetUserWalletComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnGetUserWalletComplete(FModioErrorCode ErrorCode, FModioOptionalUInt64 WalletBalance)\n{\n if (!ErrorCode)\n {\n \t// Wallet balance successfully retrieved\n }\n}\n"})})})]}),"\n",(0,s.jsx)(t.h2,{id:"querying-mods",children:"Querying mods"}),"\n",(0,s.jsxs)(t.p,{children:["As part ",(0,s.jsx)(t.code,{children:"UModioSubsystem::ListAllModsAsync"}),", you can include an additional filter for whether you list paid mods. By default, only free mods are shown. Set ",(0,s.jsx)(t.code,{children:"RevenueType"})," on the ",(0,s.jsx)(t.code,{children:"ModioFilterParams"})," object passed to ",(0,s.jsx)(t.code,{children:"UModioSubsystem::ListAllModsAsync"})," to include free and paid content, or just paid content. All mods returned will have a ",(0,s.jsx)(t.code,{children:"Price"})," property, indicating the virtual currency price that must be paid to purchase that mod."]}),"\n",(0,s.jsx)(t.p,{children:"Filtering for Paid/Unpaid content is not currently exposed to Blueprint."}),"\n",(0,s.jsx)(t.h2,{id:"purchasing-mods",children:"Purchasing mods"}),"\n",(0,s.jsxs)(t.p,{children:["Call ",(0,s.jsx)(t.code,{children:"UModioSubsystem::PurchaseModAsync"})," to purchase a specified mod. ",(0,s.jsx)(t.code,{children:"PurchaseModAsync"})," takes two parameters: the ",(0,s.jsx)(t.code,{children:"ModioModID"})," of the mod to purchase, and the ",(0,s.jsx)(t.code,{children:"ExpectedPrice"}),", which is the price displayed to the user from ",(0,s.jsx)(t.code,{children:"UModioSubsystem::ListAllModsAsync"}),". You must include this parameter for safety so the user is not charged more or less than the price displayed to them, in case the price of the mod has changed between the call to ",(0,s.jsx)(t.code,{children:"ListAllModsAsync"})," and purchase time."]}),"\n",(0,s.jsx)(t.p,{children:"Once a mod is purchased, it is automatically subscribed to for the user."}),"\n",(0,s.jsxs)(t.p,{children:["You should validate that the user has enough virtual currency to make the purchase by comparing it to the balance you received from ",(0,s.jsx)(t.code,{children:"UModioSubsystem::GetUserWalletBalanceAsync"}),". This is purely for user experience (e.g. for graying out the purchase button in the UI, or upselling the user a virtual currency pack); ",(0,s.jsx)(t.code,{children:"UModioSubsystem::PurchaseModAsync"})," will return an error if the user has insufficient funds in their wallet."]}),"\n",(0,s.jsxs)(t.p,{children:["An updated wallet balance (with the purchase amount subtracted) is returned in the callback of ",(0,s.jsx)(t.code,{children:"UModioSubsystem::PurchaseModAsync"}),"."]}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(o.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"purchase_mod",src:n(15154).A+"",width:"617",height:"442"})})}),(0,s.jsx)(o.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-cpp",children:"void UModioManagerSubsystem::PurchaseMod(FModioModID ModId, FModioUnsigned64 ExpectedPrice)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->PurchaseModAsync(ModId, ExpectedPrice, FOnPurchaseModDelegate::CreateUObject(this, &UModioManagerSubsystem::OnPurchaseModComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnPurchaseModComplete(FModioErrorCode ErrorCode, FModioOptionalTransactionRecord Transaction)\n{\n if (!ErrorCode)\n {\n \t// Mod purchase successful\n }\n}\n"})})})]}),"\n",(0,s.jsx)(t.h2,{id:"showing-user-purchases",children:"Showing user purchases"}),"\n",(0,s.jsxs)(t.p,{children:["While purchased mods are automatically subscribed and installed at purchase time, the user can freely unsubscribe and uninstall purchased mods and they and they will remain owned and purchased by the user. They must re-subscribe to the mod to have it re-installed. Use ",(0,s.jsx)(t.code,{children:"UModioSubsystem::FetchUserPurchasesAsync"})," to fetch an updated list of a user's purchased mods from the server. After a successful call, you can then display the user's purchased mods with ",(0,s.jsx)(t.code,{children:"UModioSubsystem::QueryUserPurchasedMods"}),", allowing re-subscription as desired."]}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(o.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"show_user_purchases",src:n(97910).A+"",width:"580",height:"481"})})}),(0,s.jsx)(o.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-cpp",children:"void UModioManagerSubsystem::FetchUserPurchases()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->FetchUserPurchasesAsync(FOnFetchUserPurchasesDelegate::CreateUObject(this, &UModioManagerSubsystem::OnFetchUserPurchasesComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnFetchUserPurchasesComplete(FModioErrorCode ErrorCode)\n{\n if (!ErrorCode)\n {\n \t// Purchases Successfully Fetched\n \tif (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n \t{\n \t\t// We can now access the list of purchased mods directly\n \t\tTMap PurchasedMods = Subsystem->QueryUserPurchasedMods();\n \t}\n }\n}\n"})})})]}),"\n",(0,s.jsx)(t.h2,{id:"getting-a-user-delegation-token",children:"Getting a user delegation token"}),"\n",(0,s.jsxs)(t.p,{children:["User delegation tokens can be used by a backend server for S2S (Server to Server) transactions. You can get one for the current user by calling ",(0,s.jsx)(t.code,{children:"UModioSubsystem::GetUserDelegationTokenAsync"}),", the callback for which contains the token as an ",(0,s.jsx)(t.code,{children:"FString"}),"."]}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(o.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"get_user_delegation_token",src:n(94773).A+"",width:"670",height:"448"})})}),(0,s.jsx)(o.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-cpp",children:"void UModioManagerSubsystem::GetUserDelegationToken()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->GetUserDelegationTokenAsync(FOnGetUserDelegationTokenDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnGetUserDelegationTokenCallback));\n }\n}\n\nvoid UModioManagerSubsystem::OnGetUserDelegationTokenCallback(FModioErrorCode ErrorCode, FString UserDelegationToken)\n{\n if (!ErrorCode)\n {\n \t// Successfully got User Delegation Token\n }\n}\n"})})})]})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},19365:(e,t,n)=>{n.d(t,{A:()=>o});n(96540);var s=n(18215);const r={tabItem:"tabItem_Ymn6"};var a=n(74848);function o(e){let{children:t,hidden:n,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,s.A)(r.tabItem,o),hidden:n,children:t})}},11470:(e,t,n)=>{n.d(t,{A:()=>M});var s=n(96540),r=n(18215),a=n(23104),o=n(56347),i=n(205),l=n(57485),u=n(31682),c=n(70679);function d(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,s.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:n,attributes:s,default:r}}=e;return{value:t,label:n,attributes:s,default:r}}))}(n);return function(e){const t=(0,u.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const r=(0,o.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,s.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(r.location.search);t.set(a,e),r.replace({...r.location,search:t.toString()})}),[a,r])]}function g(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,a=h(e),[o,l]=(0,s.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const s=n.find((e=>e.default))??n[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:t,tabValues:a}))),[u,d]=p({queryString:n,groupId:r}),[g,b]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,a]=(0,c.Dv)(n);return[r,(0,s.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:r}),f=(()=>{const e=u??g;return m({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=n(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=n(74848);function v(e){let{className:t,block:n,selectedValue:s,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,a.a_)(),c=e=>{const t=e.currentTarget,n=l.indexOf(t),r=i[n].value;r!==s&&(u(t),o(r))},d=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":n},t),children:i.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,ref:e=>l.push(e),onKeyDown:d,onClick:c,...a,className:(0,r.A)("tabs__item",f.tabItem,a?.className,{"tabs__item--active":s===t}),children:n??t},t)}))})}function x(e){let{lazy:t,children:n,selectedValue:r}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===r));return e?(0,s.cloneElement)(e,{className:"margin-top--md"}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,s.cloneElement)(e,{key:t,hidden:e.props.value!==r})))})}function j(e){const t=g(e);return(0,y.jsxs)("div",{className:(0,r.A)("tabs-container",f.tabList),children:[(0,y.jsx)(v,{...t,...e}),(0,y.jsx)(x,{...t,...e})]})}function M(e){const t=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(t))}},89236:(e,t,n)=>{n.d(t,{A:()=>a});var s=n(19365),r=(n(96540),n(74848));function a(e){return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(s.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,n)=>{n.d(t,{A:()=>a});var s=n(11470),r=(n(96540),n(74848));function a(e){return(0,r.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,r.jsx)(s.A,{...e})})}},94773:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/get_user_delegation_token-9ae69e059f28541bbac934ea02b8f994.png"},80814:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/get_user_wallet-3e8cab6076988d8cc7469c3183f8711b.png"},15154:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/purchase_mod-d1e2b2ee8586f08eada43e87167ee125.png"},97910:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/show_user_purchases-575ecaef025b90bbf3ea30f2c0437cfe.png"},28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>i});var s=n(96540);const r={},a=s.createContext(r);function o(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/cddf829a.6ee7539f.js b/Doc/assets/js/cddf829a.6ee7539f.js new file mode 100644 index 00000000..6f696b4f --- /dev/null +++ b/Doc/assets/js/cddf829a.6ee7539f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8840],{64088:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>d,toc:()=>u});var s=n(74848),r=n(28453),a=n(27064),o=n(89236);const i={id:"ue-monetization",title:"Monetization",slug:"/unreal/getting-started/monetization",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/monetization.mdx"},l=void 0,d={id:"getting-started/ue-monetization",title:"Monetization",description:"The mod.io Unreal Engine Plugin supports a range of monetization features, allowing you to sell a per-game virtual currency to your players that they can use to purchase mods, with a share of the revenue split between creators and your studio. An overview of the mod.io monetization system is available here.",source:"@site/public/en-us/getting-started/monetization.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/monetization",permalink:"/unreal/getting-started/monetization",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/monetization.mdx",tags:[],version:"current",frontMatter:{id:"ue-monetization",title:"Monetization",slug:"/unreal/getting-started/monetization",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/monetization.mdx"},sidebar:"sidebar",previous:{title:"Error Handling",permalink:"/unreal/getting-started/error-handling"},next:{title:"Temporary Mod Sets",permalink:"/unreal/getting-started/temporary-mods"}},c={},u=[{value:"Initialization",id:"initialization",level:2},{value:"Getting the user's wallet",id:"getting-the-users-wallet",level:2},{value:"Querying mods",id:"querying-mods",level:2},{value:"Purchasing mods",id:"purchasing-mods",level:2},{value:"Showing user purchases",id:"showing-user-purchases",level:2},{value:"Getting a user delegation token",id:"getting-a-user-delegation-token",level:2},{value:"Listing and Purchasing Premium Currency",id:"listing-and-purchasing-premium-currency",level:2},{value:"Displaying the Native Platform Store",id:"displaying-the-native-platform-store",level:3},{value:"Displaying Component UI Store Offers",id:"displaying-component-ui-store-offers",level:3},{value:"Consuming User Entitlements",id:"consuming-user-entitlements",level:2}];function h(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["The mod.io Unreal Engine Plugin supports a range of monetization features, allowing you to sell a per-game virtual currency to your players that they can use to purchase mods, with a share of the revenue split between creators and your studio. An overview of the mod.io monetization system is available ",(0,s.jsx)(t.a,{href:"/monetization/",children:"here"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["Every platform requires specific setup for monetization features to work, particularly with respect to the virtual currency configuration and API calls. The following documentation is generically applicable. Platform-specific information is available in the relevant ",(0,s.jsx)(t.a,{href:"/platforms/",children:"platform documentation section"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"initialization",children:"Initialization"}),"\n",(0,s.jsxs)(t.p,{children:["The mod.io monetization features are enabled during the onboarding process on your ",(0,s.jsx)(t.a,{href:"https://mod.io/g",children:"game profile"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["Ensure that you have set the appropriate ",(0,s.jsx)(t.code,{children:"Portal"})," when ",(0,s.jsx)(t.a,{href:"initialization",children:"initializing the plugin"}),". For instance, on Steam you must initialize with ",(0,s.jsx)(t.code,{children:"EModioPortal::Steam"})," to redeem entitlements for Steam."]}),"\n",(0,s.jsx)(t.h2,{id:"getting-the-users-wallet",children:"Getting the user's wallet"}),"\n",(0,s.jsxs)(t.p,{children:["On startup, you can make a call to ",(0,s.jsx)(t.code,{children:"UModioSubsystem::GetUserWalletBalanceAsync"})," to get the balance of the current user's wallet. If no wallet exists for the user, one will be automatically created for them. This call returns the user's wallet balance for the current game."]}),"\n",(0,s.jsxs)(t.p,{children:["The only time you need to make this call is on start-up. We recommend that you cache the value of this result in your game code rather than making consistent calls to ",(0,s.jsx)(t.code,{children:"UModioSubsystem::GetUserWalletBalanceAsync"}),", and update your local state from the return values of other calls that affect wallet balance."]}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(o.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"get_user_wallet",src:n(93207).A+"",width:"598",height:"414"})})}),(0,s.jsx)(o.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-cpp",children:"void UModioManagerSubsystem::GetUserWallet()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->GetUserWalletBalanceAsync(FOnGetUserWalletBalanceDelegate::CreateUObject(this, &UModioManagerSubsystem::OnGetUserWalletComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnGetUserWalletComplete(FModioErrorCode ErrorCode, FModioOptionalUInt64 WalletBalance)\n{\n if (!ErrorCode)\n {\n \t// Wallet balance successfully retrieved\n }\n}\n"})})})]}),"\n",(0,s.jsx)(t.h2,{id:"querying-mods",children:"Querying mods"}),"\n",(0,s.jsxs)(t.p,{children:["As part ",(0,s.jsx)(t.code,{children:"UModioSubsystem::ListAllModsAsync"}),", you can include an additional filter for whether you list paid mods. By default, only free mods are shown. Set ",(0,s.jsx)(t.code,{children:"RevenueType"})," on the ",(0,s.jsx)(t.code,{children:"ModioFilterParams"})," object passed to ",(0,s.jsx)(t.code,{children:"UModioSubsystem::ListAllModsAsync"})," to include free and paid content, or just paid content. All mods returned will have a ",(0,s.jsx)(t.code,{children:"Price"})," property, indicating the virtual currency price that must be paid to purchase that mod."]}),"\n",(0,s.jsx)(t.p,{children:"Filtering for Paid/Unpaid content is not currently exposed to Blueprint."}),"\n",(0,s.jsx)(t.h2,{id:"purchasing-mods",children:"Purchasing mods"}),"\n",(0,s.jsxs)(t.p,{children:["Call ",(0,s.jsx)(t.code,{children:"UModioSubsystem::PurchaseModAsync"})," to purchase a specified mod. ",(0,s.jsx)(t.code,{children:"PurchaseModAsync"})," takes two parameters: the ",(0,s.jsx)(t.code,{children:"ModioModID"})," of the mod to purchase, and the ",(0,s.jsx)(t.code,{children:"ExpectedPrice"}),", which is the price displayed to the user from ",(0,s.jsx)(t.code,{children:"UModioSubsystem::ListAllModsAsync"}),". You must include this parameter for safety so the user is not charged more or less than the price displayed to them, in case the price of the mod has changed between the call to ",(0,s.jsx)(t.code,{children:"ListAllModsAsync"})," and purchase time."]}),"\n",(0,s.jsx)(t.p,{children:"Once a mod is purchased, it is automatically subscribed to for the user."}),"\n",(0,s.jsxs)(t.p,{children:["You should validate that the user has enough virtual currency to make the purchase by comparing it to the balance you received from ",(0,s.jsx)(t.code,{children:"UModioSubsystem::GetUserWalletBalanceAsync"}),". This is purely for user experience (e.g. for graying out the purchase button in the UI, or upselling the user a virtual currency pack); ",(0,s.jsx)(t.code,{children:"UModioSubsystem::PurchaseModAsync"})," will return an error if the user has insufficient funds in their wallet."]}),"\n",(0,s.jsxs)(t.p,{children:["An updated wallet balance (with the purchase amount subtracted) is returned in the callback of ",(0,s.jsx)(t.code,{children:"UModioSubsystem::PurchaseModAsync"}),"."]}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(o.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"purchase_mod",src:n(793).A+"",width:"617",height:"442"})})}),(0,s.jsx)(o.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-cpp",children:"void UModioManagerSubsystem::PurchaseMod(FModioModID ModId, FModioUnsigned64 ExpectedPrice)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->PurchaseModAsync(ModId, ExpectedPrice, FOnPurchaseModDelegate::CreateUObject(this, &UModioManagerSubsystem::OnPurchaseModComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnPurchaseModComplete(FModioErrorCode ErrorCode, FModioOptionalTransactionRecord Transaction)\n{\n if (!ErrorCode)\n {\n \t// Mod purchase successful\n }\n}\n"})})})]}),"\n",(0,s.jsx)(t.h2,{id:"showing-user-purchases",children:"Showing user purchases"}),"\n",(0,s.jsxs)(t.p,{children:["While purchased mods are automatically subscribed and installed at purchase time, the user can freely unsubscribe and uninstall purchased mods and they and they will remain owned and purchased by the user. They must re-subscribe to the mod to have it re-installed. Use ",(0,s.jsx)(t.code,{children:"UModioSubsystem::FetchUserPurchasesAsync"})," to fetch an updated list of a user's purchased mods from the server. After a successful call, you can then display the user's purchased mods with ",(0,s.jsx)(t.code,{children:"UModioSubsystem::QueryUserPurchasedMods"}),", allowing re-subscription as desired."]}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(o.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"show_user_purchases",src:n(24959).A+"",width:"580",height:"481"})})}),(0,s.jsx)(o.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-cpp",children:"void UModioManagerSubsystem::FetchUserPurchases()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->FetchUserPurchasesAsync(FOnFetchUserPurchasesDelegate::CreateUObject(this, &UModioManagerSubsystem::OnFetchUserPurchasesComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnFetchUserPurchasesComplete(FModioErrorCode ErrorCode)\n{\n if (!ErrorCode)\n {\n \t// Purchases Successfully Fetched\n \tif (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n \t{\n \t\t// We can now access the list of purchased mods directly\n \t\tTMap PurchasedMods = Subsystem->QueryUserPurchasedMods();\n \t}\n }\n}\n"})})})]}),"\n",(0,s.jsx)(t.h2,{id:"getting-a-user-delegation-token",children:"Getting a user delegation token"}),"\n",(0,s.jsxs)(t.p,{children:["User delegation tokens can be used by a backend server for S2S (Server to Server) transactions. You can get one for the current user by calling ",(0,s.jsx)(t.code,{children:"UModioSubsystem::GetUserDelegationTokenAsync"}),", the callback for which contains the token as an ",(0,s.jsx)(t.code,{children:"FString"}),"."]}),"\n",(0,s.jsxs)(a.A,{"group-id":"languages",children:[(0,s.jsx)(o.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"get_user_delegation_token",src:n(40956).A+"",width:"670",height:"448"})})}),(0,s.jsx)(o.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-cpp",children:"void UModioManagerSubsystem::GetUserDelegationToken()\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tSubsystem->GetUserDelegationTokenAsync(FOnGetUserDelegationTokenDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnGetUserDelegationTokenCallback));\n }\n}\n\nvoid UModioManagerSubsystem::OnGetUserDelegationTokenCallback(FModioErrorCode ErrorCode, FString UserDelegationToken)\n{\n if (!ErrorCode)\n {\n \t// Successfully got User Delegation Token\n }\n}\n"})})})]}),"\n",(0,s.jsx)(t.h2,{id:"listing-and-purchasing-premium-currency",children:"Listing and Purchasing Premium Currency"}),"\n",(0,s.jsx)(t.p,{children:"The Monetization premium features mod.io includes the ability to show the relevant platform store (where possible), which allows the user to purchase virtual currency, top up their wallet, and purchase Premium UGC all without leaving the game."}),"\n",(0,s.jsx)(t.p,{children:"This functionality is exposed in one of two ways."}),"\n",(0,s.jsx)(t.h3,{id:"displaying-the-native-platform-store",children:"Displaying the Native Platform Store"}),"\n",(0,s.jsxs)(t.p,{children:["The recommended method is to simply call ",(0,s.jsx)(t.code,{children:"UModioUISubsystem::RequestShowTokenPurchaseUIWithHandler"})," which will attempt to show the appropriate Platform Native storefront via Unreal's ",(0,s.jsx)(t.code,{children:"IOnlineSubsystem"}),". This function will return an ",(0,s.jsx)(t.code,{children:"EModioOpenStoreResult"})," indicating whether call succeeded or not."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"FailedInactive"})," indicates that the Monetization feature is disabled in the base Mod.io plugin settings."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"FailedUnsupportedPlatform"})," means that the current platform has not implemented its native storefront in the Unreal Engine Online Subsystem, and so you will have to implement your own method for getting and displaying purchasable items. An example/template of this can be found in the ComponentUI reference design, see below for more information."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"FailedUnknown"})," is a catch-all for other error types, such as inactive online subsystems, network issues, etc, and you should check the relevant logs for any pertinent information."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"Success"})," means that the platform store UI is being displayed, and you can then listen for the ",(0,s.jsx)(t.code,{children:"Callback"})," to handle any resulting purchases. This ",(0,s.jsx)(t.code,{children:"Callback"})," only indicates whether the Store was opened and closed successfully, not whether the user made a purchase or not. There is also ",(0,s.jsx)(t.code,{children:"UModioUISubsystem::RequestShowTokenPurchaseUI"})," for instances where a Callback is not needed."]}),"\n",(0,s.jsx)(a.A,{"group-id":"languages",children:(0,s.jsx)(o.A,{value:"blueprint",label:"Blueprint",children:(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"ShowPlatformStoreUI",src:n(55494).A+"",width:"1029",height:"445"})})})}),"\n",(0,s.jsx)(t.h3,{id:"displaying-component-ui-store-offers",children:"Displaying Component UI Store Offers"}),"\n",(0,s.jsx)(t.p,{children:"In cases where native store display is not supported, there is a provided template UI component for displaying and listing product offers within the Component UI itself."}),"\n",(0,s.jsxs)(t.p,{children:["Found at ",(0,s.jsx)(t.code,{children:"ModioComponentUI/Content/UI/Templates/Default/WBP_ModioDefaultTokenPackBrowser"})," this Widget provides a framework and example of querying a set of product offers, displaying them, and purchasing them through the platform store."]}),"\n",(0,s.jsx)(t.p,{children:"NOTE: With either the Native or Component UI methods, the refreshing and consumption of purchased Entitlements, as well as the updating of the user's Wallet Balance, is left up to you the developer due to platform limitations."}),"\n",(0,s.jsx)(t.h2,{id:"consuming-user-entitlements",children:"Consuming User Entitlements"}),"\n",(0,s.jsx)(t.p,{children:"User Entitlements are virtual currency packs/products that the user can purchase through their relevant platform store. These Entitlements can then be consumed; in the case of virtual currency, adding balance to their mod.io wallet for use purchasing UGC."}),"\n",(0,s.jsxs)(t.p,{children:["Once a user has purchased a virtual currency pack on a given store those entitlements must be consumed before they can be used. To do so you can call ",(0,s.jsx)(t.code,{children:"UModioSubsystem::RefreshUserEntitlementsAsync"})," which takes in ",(0,s.jsx)(t.code,{children:"FModioEntitlementParams"})," and a ",(0,s.jsx)(t.code,{children:"FOnRefreshUserEntitlementsDelegateFast"})," as a Callback, returning an ",(0,s.jsx)(t.code,{children:"FModioErrorCode"})," and ",(0,s.jsx)(t.code,{children:"TOptional"})," indicating the status of the user\u2019s entitlements."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"FModioEntitlementParams"})," is to be populated with the Delegation Token received from ",(0,s.jsx)(t.code,{children:"UModioSubsystem::GetUserDelegationTokenAsync"}),"."]}),"\n",(0,s.jsx)(a.A,{"group-id":"languages",children:(0,s.jsx)(o.A,{value:"c++",label:"C++",default:!0,children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-cpp",children:'// Get the relevant platform authentication token prior to making this call.\nvoid UModioManager::RefreshUserEntitlements(const FString& PlatformAuthToken)\n{\n\tif (GEngine->GetEngineSubsystem())\n\t{\n\t\tFModioEntitlementParams Params;\n\t\tParams.ExtendedParams.Add("auth_code", PlatformAuthToken);\n\t\tGEngine->GetEngineSubsystem()->RefreshUserEntitlementsAsync(Params, FOnRefreshUserEntitlementsDelegateFast::CreateUObject(this, &UModioManager::OnRefreshUserEntitlementsCallback));\n\t}\n}\n\nvoid UModioManager::OnRefreshUserEntitlementsCallback(FModioErrorCode ErrorCode, TOptional ConsumptionStatusList)\n{\n\tif (ErrorCode == false)\n\t{\n\t\t// Successfully refreshed entitlements.\n\t}\n}\n'})})})}),"\n",(0,s.jsxs)(t.p,{children:["After entitlements are refreshed successfully any classes properly implementing the ",(0,s.jsx)(t.code,{children:"ModioUIWalletBalanceUpdatedEventReceiver"})," interface will receive the updated balance."]})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},19365:(e,t,n)=>{n.d(t,{A:()=>o});n(96540);var s=n(18215);const r={tabItem:"tabItem_Ymn6"};var a=n(74848);function o(e){let{children:t,hidden:n,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,s.A)(r.tabItem,o),hidden:n,children:t})}},11470:(e,t,n)=>{n.d(t,{A:()=>M});var s=n(96540),r=n(18215),a=n(23104),o=n(56347),i=n(205),l=n(57485),d=n(31682),c=n(70679);function u(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,s.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:s,default:r}}=e;return{value:t,label:n,attributes:s,default:r}}))}(n);return function(e){const t=(0,d.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const r=(0,o.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,l.aZ)(a),(0,s.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(r.location.search);t.set(a,e),r.replace({...r.location,search:t.toString()})}),[a,r])]}function g(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,a=h(e),[o,l]=(0,s.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const s=n.find((e=>e.default))??n[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:t,tabValues:a}))),[d,u]=p({queryString:n,groupId:r}),[g,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,a]=(0,c.Dv)(n);return[r,(0,s.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:r}),b=(()=>{const e=d??g;return m({value:e,tabValues:a})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:o,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),f(e)}),[u,f,a]),tabValues:a}}var f=n(92303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=n(74848);function x(e){let{className:t,block:n,selectedValue:s,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,a.a_)(),c=e=>{const t=e.currentTarget,n=l.indexOf(t),r=i[n].value;r!==s&&(d(t),o(r))},u=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const n=l.indexOf(e.currentTarget)+1;t=l[n]??l[0];break}case"ArrowLeft":{const n=l.indexOf(e.currentTarget)-1;t=l[n]??l[l.length-1];break}}t?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":n},t),children:i.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,ref:e=>l.push(e),onKeyDown:u,onClick:c,...a,className:(0,r.A)("tabs__item",b.tabItem,a?.className,{"tabs__item--active":s===t}),children:n??t},t)}))})}function v(e){let{lazy:t,children:n,selectedValue:r}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===r));return e?(0,s.cloneElement)(e,{className:"margin-top--md"}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,s.cloneElement)(e,{key:t,hidden:e.props.value!==r})))})}function j(e){const t=g(e);return(0,y.jsxs)("div",{className:(0,r.A)("tabs-container",b.tabList),children:[(0,y.jsx)(x,{...t,...e}),(0,y.jsx)(v,{...t,...e})]})}function M(e){const t=(0,f.A)();return(0,y.jsx)(j,{...e,children:u(e.children)},String(t))}},89236:(e,t,n)=>{n.d(t,{A:()=>a});var s=n(19365),r=(n(96540),n(74848));function a(e){return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(s.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,n)=>{n.d(t,{A:()=>a});var s=n(11470),r=(n(96540),n(74848));function a(e){return(0,r.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,r.jsx)(s.A,{...e})})}},55494:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/ShowPlatformStoreUI-513a06081ba9b2c613e5e4da85b0ca4b.png"},40956:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/get_user_delegation_token-9ae69e059f28541bbac934ea02b8f994.png"},93207:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/get_user_wallet-3e8cab6076988d8cc7469c3183f8711b.png"},793:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/purchase_mod-d1e2b2ee8586f08eada43e87167ee125.png"},24959:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/show_user_purchases-575ecaef025b90bbf3ea30f2c0437cfe.png"},28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>i});var s=n(96540);const r={},a=s.createContext(r);function o(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/d99e1931.11845b15.js b/Doc/assets/js/d99e1931.11845b15.js new file mode 100644 index 00000000..35429312 --- /dev/null +++ b/Doc/assets/js/d99e1931.11845b15.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[1462],{20040:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>r,toc:()=>a});var i=t(74848),s=t(28453);const o={id:"ue-installation-and-setup",title:"Installation & Setup",slug:"/unreal/installation-and-setup/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/installation-and-setup.mdx"},l=void 0,r={id:"ue-installation-and-setup",title:"Installation & Setup",description:"Adding plugin files to your project",source:"@site/public/en-us/installation-and-setup.mdx",sourceDirName:".",slug:"/unreal/installation-and-setup/",permalink:"/unreal/installation-and-setup/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/installation-and-setup.mdx",tags:[],version:"current",frontMatter:{id:"ue-installation-and-setup",title:"Installation & Setup",slug:"/unreal/installation-and-setup/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/installation-and-setup.mdx"},sidebar:"sidebar",previous:{title:"Overview",permalink:"/unreal/"},next:{title:"Getting Started",permalink:"/unreal/getting-started/"}},d={},a=[{value:"Adding plugin files to your project",id:"adding-plugin-files-to-your-project",level:2},{value:"As a git submodule",id:"as-a-git-submodule",level:3},{value:"In a non-git project, or without submodules",id:"in-a-non-git-project-or-without-submodules",level:3},{value:"Enabling the plugin",id:"enabling-the-plugin",level:2},{value:"Plugin configuration",id:"plugin-configuration",level:2},{value:"Using a background thread",id:"using-a-background-thread",level:2},{value:"Using the Live environment",id:"using-the-live-environment",level:2},{value:"Next Steps",id:"next-steps",level:2}];function A(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"adding-plugin-files-to-your-project",children:"Adding plugin files to your project"}),"\n",(0,i.jsxs)(n.p,{children:["Download the Unreal Engine plugin from the ",(0,i.jsx)(n.a,{href:"https://github.com/modio/modio-ue",children:"mod.io GitHub repository"})," using one of the following methods:"]}),"\n",(0,i.jsx)(n.h3,{id:"as-a-git-submodule",children:"As a git submodule"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["In the directory with your ",(0,i.jsx)(n.code,{children:".uproject"})," file, add and download the mod.io plugin as a git submodule with the command:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"git submodule add https://github.com/modio/modio-ue.git Plugins/Modio"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Next, initialize our submodules and dependencies:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"git submodule update --init --recursive"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"in-a-non-git-project-or-without-submodules",children:"In a non-git project, or without submodules"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Grab the latest release zip from the ",(0,i.jsx)(n.a,{href:"https://github.com/modio/modio-ue/releases",children:"releases section"})," on GitHub and extract the contents to your project\u2019s ",(0,i.jsx)(n.code,{children:"Plugins/Modio"})," directory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.img,{alt:"get_latest_release",src:t(23846).A+"",width:"385",height:"235"})," ",(0,i.jsx)(n.img,{alt:"get_latest_release2",src:t(48518).A+"",width:"366",height:"181"})]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"GitHub's automatically generated zips will not work! They do not contain our submodule dependencies. Ensure you download the zip file from the releases page as highlighted above."})}),"\n",(0,i.jsx)(n.h2,{id:"enabling-the-plugin",children:"Enabling the plugin"}),"\n",(0,i.jsx)(n.p,{children:"Start the editor and enable the plugin in the Unreal Engine plugin settings."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"plugin_window",src:t(78892).A+"",width:"1593",height:"633"})}),"\n",(0,i.jsx)(n.h2,{id:"plugin-configuration",children:"Plugin configuration"}),"\n",(0,i.jsx)(n.p,{children:"The plugin requires some initial configuration to behave correctly. You can access these settings in the Project Settings window:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"plugin_settings",src:t(80619).A+"",width:"1577",height:"964"})}),"\n",(0,i.jsx)(n.p,{children:"The settings have the following parameters:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Property"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Game Id"}),(0,i.jsx)(n.td,{children:"Your mod.io-provided Game Id for the target environment"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"API Key"}),(0,i.jsx)(n.td,{children:"Your mod.io-provided API key for the target environment"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Environment"}),(0,i.jsxs)(n.td,{children:["Your target environment, ",(0,i.jsx)(n.code,{children:"Live"})," or ",(0,i.jsx)(n.code,{children:"Test"})]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Log Level"}),(0,i.jsx)(n.td,{children:"The default logging level to use. Messages with a lower log level will be silently discarded."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Portal"}),(0,i.jsx)(n.td,{children:"The default portal to use. This usually corresponds to the store your game will be distributed through."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Use Background Thread"}),(0,i.jsxs)(n.td,{children:["Enables or disables the use of a ",(0,i.jsx)(n.a,{href:"#using-a-background-thread",children:"background thread"})," for the plugin's work."]})]})]})]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["The Test environment is available for usage in limited circumstances only. ",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"/unreal/installation-and-setup/#using-the-live-environment",children:"All games should be set up on the Live environment"})}),". Set your game to ",(0,i.jsx)(n.strong,{children:"hidden"})," to restrict access during the testing phase. If you require access to Test, please contact us."]})}),"\n",(0,i.jsx)(n.h2,{id:"using-a-background-thread",children:"Using a background thread"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"/unreal/refdocs/#run-pending-handlers",children:(0,i.jsx)(n.code,{children:"RunPendingHandlers"})})," is responsible for running any pending plugin work, including invoking callbacks passed to asynchronous operations. With ",(0,i.jsx)(n.code,{children:"Use Background Thread"})," set to ",(0,i.jsx)(n.code,{children:"true"}),", the mod.io plugin will automatically spin up a background thread and continually call ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"})," for you. This decouples the frequency of the plugin\u2019s work from your game's main thread, and improves performance of the plugin overall."]}),"\n",(0,i.jsxs)(n.p,{children:["Calling methods from the ",(0,i.jsx)(n.a,{href:"/unreal/refdocs/#modiosubsystem",children:(0,i.jsx)(n.code,{children:"ModioSubsystem"})})," will marshall all callbacks back to the game thread. All other plugin call guarantees remain the same."]}),"\n",(0,i.jsxs)(n.h2,{id:"using-the-live-environment",children:["Using the ",(0,i.jsx)(n.code,{children:"Live"})," environment"]}),"\n",(0,i.jsxs)(n.p,{children:["All games should be set up on the ",(0,i.jsx)(n.code,{children:"Live"})," environment for full access to the mod.io REST API's capabilities."]}),"\n",(0,i.jsxs)(n.p,{children:["If your game or it's modding capabilities are not yet publicly available, set your game to ",(0,i.jsx)(n.strong,{children:"hidden"})," on the ",(0,i.jsx)(n.code,{children:"Live"})," environment. This allows you to restrict access to specific accounts and perform QA against the production environment without exposing your title to the public."]}),"\n",(0,i.jsxs)(n.p,{children:["Once you are ready, change the state from ",(0,i.jsx)(n.strong,{children:"hidden"})," to ",(0,i.jsx)(n.strong,{children:"public"})," for a full release of your game\u2019s modding capabilities."]}),"\n",(0,i.jsx)(n.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Our ",(0,i.jsx)(n.a,{href:"/unreal/getting-started/",children:"Getting Started Guide"})," page contains a series of quick-start guides with code samples demonstrating the plugin's core functionality."]}),"\n",(0,i.jsxs)(n.li,{children:["A sample project demonstrating basic mod.io functionality is available ",(0,i.jsx)(n.a,{href:"https://go.mod.io/ue5-sample",children:"here"}),"."]}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(A,{...e})}):A(e)}},23846:(e,n,t)=>{t.d(n,{A:()=>i});const i="data:image/png;base64,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"},48518:(e,n,t)=>{t.d(n,{A:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW4AAAC1CAIAAADwToKAAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACOaSURBVHhe7Z0LfFNVtv93kqZJIX2kaEkqAoVCCzjU0tuBCsgFEQSkguAd5G+Rq1P+DihzdcQ7DBcZYeZfr3jVQYtK1WEs1quOD0DAKhQraq2dUosKVB4FBptQKH2FNu/8195n59UmbSinadOu7+d82v1Ye++Tk5zfWWufk2xJpHow6RIjR40+deInnkEQpH8j5f8RBEGuAZQSBEFEAKUEQRARQClBEEQEUEoQBBEBlBIEQUQApQRBEBFAKUEQRARQShAEEQGUEgRBRAClBEEQEUApQRBEBFBKEAQRAZQSBEFEAKUEQRARQClBEEQEUEoQBBEBlBIEQUQApQRBEBHA33bt7URHxwxURSojIsLCwiBrtVqNra1XDM2NjQ2CAYL0BkJIShY98+lvJ4RD4uR79z7wqk4o7MuAiAy6Pk4eJud5byxWS93FWhQUpJcQMgFOxD1Tx1EdARIn/5/xQqq70Uz9zYbX3tn9wjKeDyJxg7Ua7Q3+dASAKjAAM55HkB4lVKRkwKJpKQpCzpyphkx86uxfCMXdzPBbZ05N1EbQwCKogECo1bE80yFghmqC9AZCREq0WVPGygj555FXvzkF2Rtuvfs2oaIPAnFNgDoiAMbQhGcQpIcIjbmS5EffeumuG8n5jx6+b9+sHa9mDiGNX2xc9OR+Xk0ZkHjXqt8umT5isEohJXazofb7t/70u7eO05rRmSsf/bfpiXEDocZmulL7w1t//M+CY0KzYdNXr15xRzJrZWnVHX3/uY2vlTZCRcb6/825/TrBiHPxwNpFOSX+BxKJEYmjO4hrfGKxWk6fxClwpCcJCa9k/Jx/uRH+1Xy3/zg59mn5PyEdPWnOAlYnMGzZs88/On+MNoI0njt+7Fy9TakZNoJdqYff98yW1XeO00SQpnNHj59rsIdrhyWoWSNotfWlDYtTtEr7hZPHz9XbFdqU+55+ed2tEVBnudLc1HzFbKN2llZINzcZWiwdDCQO4F/40pGhC596OfcVuj2UwYs8gSbomCA9S/C8kuszf//7GfE8w6n5/M9P777IM37hDsLPe1bf+/wREJY1b26ZH09MFbl3rXmvhVmMWc1cFUPJ5nvX7m6lJTHpd01q3vnJ8eTHtr+yAGpKn1287mNmHDMxc1LTrk+OkfGPbX9hwRDpxdJnf7fu4zNQEzF1w1833eYeiJBJ697/0+3Xkx9em/nwmzTfwUCs+tqJv+HGyMgonnEzaVLGN9+UUEnZ8AdN4UMvf8PL3YDU1fxMRTZ0iXcw4fYGimqJtNFYe3d4zH6Zgpc6GW+3DHA4vpHxCfn2/Nh6EQLj5IjreR7pNoLnlVzcf9o+9uaUm91bclhNWac6Qsj0Ob+kgcaloyXs9CZHvjp2Cf4pUqYtpu4DpcFkpP8GjMi4ffQAoaRMOL0bW000G5EwaVYirymlOgJn5/zJQyBC+WHnn5iOAK2HPqukPd+QPNnfRKb/gURCGeF8TV4wHQHO6S6w/+3x0zCUKDJePm681GbLNTcJtVEOh5DwZKPF8JylmWd8US6VV0ivLlpEukYQA5yWd9/89Geeplz88q039TzdAYvmTIqGf5cqDjgvxV8frKAKJB1761J+yuve/NsnOguRDp6yetuePe++/Ojim2gbWvO3/E9qLEQWN+WxVz7+rGDrmoU38UAgUUuvVNKbfr378y/28+1p8EmA6NgE+s8H/gcSCeE5NL9kpP7iSEV7lwTopGEoMEk5aKjyetjqHJI9UsVw5fWw3RPO368I4kNKHgiPzlTwcNUnVrYhQSCocyXfb/2wwszTph92/lW40naI63GS625/2nnCf0GDDkA6+pcLuJa0Hvp/WfeseeOzH2vNRBE3bt7DW3e8tGwYrWn58uklS57IO3C01gQ1Y+eveul//7JsOGtEMdedqPzuuzbb0ep6Xt0O/wN1Lzfe/RSdK0mtWLXVp5L0BRokUmGzEQmc/5clUtgcEgmvJuR2q+m/zU3/bhGiWspTFkOOmXslgxz2ldYrz5qbMm3MdWRAVz6iJqQbCO60q9sxCdAl4Y+TOCc+3VurhVaPnHKf+wGThtKCP/9m6ax5D716uBE06KasVXfzmsZv83NWLp5356/zaM2Acfc9soCQM7WXoSq8/h+b/2P177y3jc77O77xP9C1Y7X6voj+84MNqx76zaqK1NxXnlo4lBd64q9hKGKR0CmSNjxgbdloNcDn9S/W5ldN9CYbEOOwD2UzLIMdtq+MdTfa7SclYTvMjXHOaRf4ZyVuMUK6j+BKidMxCdAlcT5OQi59/tTCzHme2x8KmSTdMGEmffB1zIJ/X8CnQkjLyZ1H2FP1YXIQoeRF9981ms8itPy06/samghTKAn58qsj9POYeNcfH57oClIiRi/Y8MITk3jOyY3Js3jn/gcSCWMrm8z1R8nL+UfiBt/Ac5500jCksEp8nP9nJbIM5aA14VHrw1S/srv9DoFxdqvMQdaGR74iHxAVMbhWQj82gN2XKiHdQbClhDkmhwNzSUjyklsT6Q7+XLr7a6HExfdvfUGfVSM3TFk8kxD1mHmPvbKz8MO333jpzQ93fpSVDJ8hwz+Kd0LN2DmPvvbBvj07Xnvljff3/j1rDFyoDGUHoYYceHrbF/V2MiBx8eb3Pt374a49H+75bOe2x6YOcQtD5T8v2OFf9JTHP9r74Z63nsjwP5BIXDH4mkTMmORUt0k3j6+94Dnj5MR3w9AEdKT9+f9WGL8ilErl8KFQO+g746JKEhYpsb9mapxsc4bQDDACYUKCQNClhDomf3ghEJfE+TiJ/afP3xbu3Xii++jbn+jnLTrl1umk+tgP5+rM0oHaxOShg8JtDedK89fdt+YjiKnPHP0RamQDNIljhw5S2uvPfbvj9/f/5/vsCt5S+OT963aUnqtrtYWrIqMiB8ottUc/e+OZF12zEa1vPvNqqQ6CKWm4aqDc2FzvfyCRaGxssFhZ8ObJz9rZ7KGS3FfuJ3/b8OE5XuwCmvSl7/XB+2prd/67Jl3NbPakTf3PUtkUxaAWiWSfuT7f5D4UdqpKqCXBAH9koNcRHR2j0fqKYfyj1/3cl6TkG+Olw1L5ynAed0ocjkZj7YLwmCL2XMkEu+Vz0+XhyusvS6SgGnEO+2yl+3sGyXbrAdPljWGqV+U0EL3DagLH5NMw8UJQxA894JUgHQOiUF9Pp4QDBIz72E8NWB1X7Uc8b26aZaWPEBmIpJ5IwD0RymfbTffa+s4sUm8GpaQ3UntBF6CagBkY80xfoQuzG99Lwl42Nx5vvXjUdKlEGp7vnFhJs1lG+3qIFhEdDHB6LxDp9M+fPpI7HBaPx0kCR+OwXSZSYTKF43CEUW3qSm/IVSFTRKh48iqJHTSo/nIdzyDdgMlkhCNstVgc4D3KpAAUWq3WlitX6i9f0ut+BgPBso9h7+qZb5BIbW3aSiRd7g25KtArQRBEBHCuBEEQEUApQRBEBFBKEAQRAZQSBEFEAKUEQRARQClBEEQEUEoQBBEB0Z4raWr196ujCIL0CqIiuniyBwJ6JQiCiIDIXkm3yh6CIF0jCKcneiUIgogASgmCICKAUoIgiAiglCAIIgIoJQiCiABKCYIgIoBSgiCICPTMcyUxarUqMlJBF8lDEKTbqThyCP6mjp8qZLuDYEuJPDx8sEZjMZsbGxv70tqUCNKb6YOPqIGOGJqaL+j1qCMI0pcIqpRAXAP+SENDPc8jCNJXCKqUqCIjIa7hGQRB+hBBlRKFQolxDYL0SfBmMIIgIoBSgiCICKCUIAgiAqEnJcMTRvzbvffBBglehCBITxNKUhKtVoOCLHsgWxsfDxskIAuFvBpBkJ4jqE+7tmkSOEplxMRbJk+cdAuRkNKvvyo+eICWZNwChcRBSr/5GgqNRrw3hCC+CcLTriEgJRptPHgfMWp1ZcXhzw/ub6x3P+EGLsm/Tp+Zkjqhob7+3bd36HU1vAJBEA/64IPzXeBXS6mOHD/6484P3vPUEQCyUFh17CgYgNzwUpFQZZbMyy1JHALJ9MQN+nkbNqmEim6GjatPTefZayYrNVc/b0UWz7nxfFFBfYEBkV4AB4FvPnfMn0GXG1LocZia6Tz0nXV1Ne9U7zvCYhMCUhIdo4bgJXnsuNWPPZE0ZiwvZUBWKAQDUBNeGtpkjZqdwJP9l/TEuQlVOZo9qzR7cvKa4rKntZVCfwZdbgg1IBy7k+J4LoCu8J3yIjSmXUu//urNN/JAL361NGvZA9kQ10DUAwnIQiFUgQE37RbKTj6l2fPUegPPdh9w7dqsqixq4tmgEbQXGCCwPxknz7Pk+V26WkK0o72v5/4MutiQ+hfLSTlIBqthdNzV1b5T0FuvOsLiEzJ3cM5Un9629cXCfR9rtNrfPvbEipWPQAKyUAhV3Igi+PObqD/JXFPwPzUreNrtuwpmfBOiGMaQTVOdhaM0vIx9bjy9Uz9t28C6co3InOECZ5fuHjx2CWy2JJG8ir2neN43bV8g76Gj4YDRbe29aOt+u46YdydeCO69sDEnX9ixAvbSeKvO+mHjuqva7kbQMOzK2LNqqZ7nOqeDd8rzsPCNujOeL83POxjihNLNYAC8jy3/s1mvq4ENEn6dkZSZ5HVwTdfUEBK/XD9KPx/c1PJKEjX7Ufaphfdyc3xtXjH4rrQ8IWmtoAhZqWuzoyrXUJ921VaS4tN99dc2cFgPwijbi6Jm7+bBdnrBtNmk6vXALlz8BQovakvnO3A19nD+p6VUc99++z5e2ga6twk125lNTl4zL4WBEpppQ3paBtBP2cm9RYQkqIT9GZKpjSM1e72PQPqjEHQ0Vezye1j8GXS5YXvaWHb4TjFVYi+ZffwIKSrfls9qvLnad7DXE2JSAkBEYzSa2Ob/7m/lVuaa5usq4W/RiV1l8M+gr+af2vQ58aTa9VHQ7wW3NkE7IZ2X7xXe+PwThWDfDn9tA8dzlLJ9VOxSs6hPsXxGzXanR90p/AUGvAOB2w/ZNCqFNBWu5ntSlt/BtVqlZf2cX3+SHmCGc6BA+6FHgO+PasLMKFKkc3UFpBfMWz6D1OZVsHfQB/4MutywPW0sA32nwA3ZTN/oHD/OztW+g72e0JOSa0el9XY3zv8k6ELbcl/4axs4rAfwZQTnFj5tFM3c7CjmQNFC8IyEtH9Xv0l/nKeudgc6tdeOhNENXie0L8qWFhdWg0tFd9jnfgbYD5P7qNRMFUnXpCaQyn2uE4/NX8wg4L75mWLwZ9Dlhu1pbxngO0UjIHBkXErajq6/g72VEJCSxob60WPGdvCYPFSBAZjxfGcYdN7uxpA2M3MdcS1tPXC6/cK2LV+/zSPLJv9o7OD/gx6lSeapq92BLu6wD7gnv72IxGWnXkO0r6+AHmZq0iG6cbmE9BzmAZTP6MC/QZcbtsenZUDvFIv+QIAO+Xd5uv4O9lZCQEreKdgxICJi2QPZmQsXt3lMHrJQCFVgAGa8tFOYU530IL+SsOsMDYIMh/eDq5k0V7jn5+dWn5+2LOcNu9qw6y3g7s2wayvtgY8CH7tNXYmTU1YKrdw74Gc4Tnt7f5Q9X1ULV1rnVGh6lq/pUo/d1p3yfRcjwH4A4ZAuz46q3a/n13C6/02F8yva7CbEGs4pXt8GXW/YnsAtGR5DpIIj42+KxEXg70iIEMb/92L0uppXc18UHpNPHjO29JuvhfJp02+bmDGZSEhx0f7Skq87mjppS37FKkJyN0/LzWbZonJh9v78+kPbR85bvhniDiisKqwms1m9F37a+iC/Yvuc+OXZzNKzt/yKnNGqtcIoAPTA/l8VldWRECLRlCsa9zccw4e9P8pOPjWfbNidlitYFZWX+TwlRkKMliQkwf+nZ4LzMssJsB8AYpzN8Sme85pz4uEvRE/ul+B9nP0ZdLkhT3sQuKUXwhQJMMP5wtnx2eYMZ1xcxTsSGoTGd3AEwAe5Y86dnk+pVR07+sm+j9s8AtvXcd4A6sw/R3orPfAO4ndwfDA8YQR1RggpLfnK+4mSHoR9OHiaUZtX3NmUXgD47PanUcH+IIr16rrpKIUcKCXe9JSU9Ht64IOIiApKiTcoJQgSKgRBSvrjcyUIgogOSgmCICKAUoIgiAiglCAIIgIoJQiCiABKCYIgIhDsm8GNDQ08gyBIsDh97nv4O2LoL4Rsd4DPlSBI3wefK0EQJDRAKUEQRARQShAEEQGR50oQBOm14FwJgiC9HdG8kkDAOzgI0ldBrwRBEBEIDa8kZcKE2XfcqYyI4HknxQcPFBft5xkEQXoOmSKiiz+dHztoUP3lOp4JjC40Ebj/gWy9Xl9ZUX62+rRSqTQYmsvLSk1GY1r6xOgYddXxo9wOQZAeIjQCHKUy4mz1KeqDHDwglEDinYL8yorDN09Iy1y4WChEEKSnCL25km1bX4RtxcpHslc+svOD9wQ1mTb9Nl6NIEhPEHpSkjRmLGzglXzBPBRQk6pjR6fNmCnUMoT18Z0bXUc+9FBllszLvYqFzam9zwU36VJPHfWjWdFHVtJHepbQkxJwQGAD+YBNKNHr2IrxnKzU3N1JJK+Yr8Y4v6oPrFbUOVmjZleX+1wIomzpnlUdrZWt3zZfl9oXVtJHepbQDnB4kSdsBdaava6Tquzkrr6/yIMqc6Wq8PmuamaZvoL0gZX0kZ4l5AMcn8TP9eXqU4fFFfg4ff4hm6bmuj18FlYIy9wy4xUFrAlf+BZiAWdz51K4Hn36CxM6buUVfbCdEQpHeS2x2/Eo6ZpUojvMFp1lK9e6NxrcQVvXK4KEqyv3uIbD+wlfbBhBukhfCHC8oOv+0rX1p8HZ4jV3AKfQ5vhaHviUVyYkrQ1gJiIloTkH7OmSrqAIaSnVVTSr2bN9H6tmfVauYSVFUbN3s9WnvfDbyseeZKWuzY4Selu1FYZmxkCnoyRHxlUbhBCGhjNsrJy8Jhii7aJNM9Jy5+gEg+3VSWud0nb+J0PcSJQS5FrocwEOQE+n+VW1RBAUfuLR1aSrq17ngY9+b14TSejcq6/cymcZhmwalUKaClfzbFk+jSaEPvey05Uux0/iU72neDto1X5PPHsj+ScKq1kikFFGq2pPec+SpCc+OFPnHMIDj5Wuy56vqp2h5QfgeHNtgqpTYUUQ/4j/tOtaS7sPsBN1bBcfUQM35Ez16bNn6NkVE6OOVqvDZGENDfV1ly5CybDhCcMTRrgeOfEgPnba0kEDq3V73zcnPThsJKn78vXLTULVeM3cWeGnCs7pkoZOSSOQqKJzt+HUrAHsDcwg8sKnJ8qPUPP4RaNuTmj+7lm9xwwvM1bzjIDLXsBvKx97oidzPMtdZgZtZ6NETR+aSvTFB808T9tqyD7hFbH+Rxn4KxISHFXa47EG4YXDgZpDKly7dK3kyNHF6XeILyX4awNIt36ZHemdhJhX4nJAPP0UL68kftHQyBLnBZl5JaT8LL1iMy/jipCmF2TtYOqtcO+Dl7M08Sh3X//dDg59efHjVTVH2nku02MNB70v7P5btd8TcC6mpCl4b8Ke1DMnJZBRXD4FGKeb3S4PACUur8TdD/V6NKeFfWjv11wj6JX0Q0Lj63xPrHvyzOnT7769g865zpi5cf3aJzflFBftB/lIGjN2YsZkjVb7zJ83UtP0gnnLZ7BGjNq8YvfTFmz+kqeLytlkKsXdpKiqMCFpdjWrck52umcu0xM37E6KE9LO5kM2TV2bHSWUefbpxlerQPeEVOWwR0I6G0WVWZJKVh/aVcZmeXkhhe4/SaVTrdAEBp2j207SnEO4+nE1ZzkE6Qoh883g5ORx7xTkC1IieCWClKxY+UiMWl247+PKw4e5dT+Eas3IE+0kxhsmJT5sQOy2kNc7eowNQTolNO7ggEyAjkBCr9fBX9ARV3rb1hfBH+nXOgKcX19RmJDm88H5ztCs2K2tcN5jQpCuEhpeCSIG/rwSBBGB0HuuBOkq+RWoI0i3gVKCIIgIoJQgCCICKCUIgogASgnS8ygcjuF2K884aV9yLdS3XHjOLNL3AtoxzG7baaqfahPrEb+QBKUE6XlyzU1HTHXPeJzqS6ytUCJ3OHjeD/NsxgetLTzjzXybMcvWyjOEfCoLj+qsty4DmjfdbrbxXD8FpQTpecKIo45IHrK1Jl2lJ3K/tfWXNgvPePNra+tEbzchith5SmxsEvaXpfstKCVIr+A7qbxYKn/ccoXn23GPtfVP5ubfWq6Mt3PtgPR1DvsEh+UhS8uvrG4HBBCq0uxWqLrbahQKwSsZZbc+YTEItUKhALgw0PlqyxWtwy0It1tN68yGjebmm50jAtNtpt9bDNDJLR46ZSVUS2wSpij9lWA/otbY0MAzCOLkxYvnohy2AlXsy5fOLYlL+FapWnCl/rm680k3jrNIpIlm4yuXzqrttuNyZbNENsvYlH3dsAMDorZcPDfd2Gwkku8UA2Lstns0I3l3hEDVbcYmA5EdUURAbW50XF7tmXHmVo3dmqe67l+NzVF2W8aQMYLxqxfPSB2kSSpb2NJwURI2Pz6xViZf3nTpyQbdJrV2RkvTFYnsobhhYLm+vubWVsM7KvVUowG2X183rGgA/WpUtN1acf7YXZqR34cPYF32R/BpV6Tn+aupYRBxZCrUO031DkIWKNRLrK3bLE2DlHEWieQlc+MIu22uMlYw3mFqiHXYhewXrXXHpWErFNFClSffGC/9Qyp/OJxXvWOqT3LYlshjjsvCbrJZvjZfvkceUximAA9lqa11ovI6wayp9cILsgFPhkd6jiIww2b6yNxwk+K6c1IZZPcbL5skZJ6CGkQ57OeNFycrYr+XypltfwQDHKRXICF0TvTZsIEz7OaFzpBE4Ba75QtZOM+wCdR/cfCIwyiRwCak29BKJLDxDONzaTjoCCR+kMnrHJLr2NRJqt0CXYOgPMo2HZEmOeh8TZlUPsVhgfIb7DzkGeOgQdRCm1GwBKMxNj6zIwQ4Vke/DnBQSpBegfBBPCQL/1CqWGVt8bzXonHYmz30oplIlYQMYLdjQEd8T7oSYiIS4Qx34Tk7YiESYcTriR18igy7eYLdMtZu/UwW/plUAeV/kQ9cLo++y2Y8Zrq0wkJvEsXZ7TAkWKbZLTfZraeksh1hfBFrQVGEydd+C0oJ0iuQOsXjf+QDf+mwTLW7JzXPSGQJTtcAGOKwge/QwsTFy3vxpr230ub+jeAHQecVUvkShTpLEZOtiIaA6DU5n+/4IEw5QznoibDIZ63NCoejWiqDBmB5nyLmQUX0qvBoiIMES7NE8ht51AkJDXz6LSglSK/Add4fkcr/KotYZnOrxN9lygVW02R2x2SSzbzeaviL82yvI1LwJuQOxwybSShxAVXgPkgdjtHOG8xOsfJil1Q5y27OdA430Wa+h90M+i+zIYw5PhclUhjYJJF8IlOAE7LaeY9phN262HnbCNKzbKZZ+IgagvQsbU7yjXLVMYkMggrBj3hOPvDvYcqPzPWXWi/sNtdvlQ3YGjaQ1ZCdMmWaw1pnrF3kIT0CH4UpJjksDcbalb6eYdNIuI9SGKZ4PCxyi6npTEttU+uFXEtTKpOeZIf1srH2aOvF/zY3PyKnt2n0EtlSefQyWyuYnWqpPWC8vMIpJXEO+0K7KbbbnlsJCfAODhIyDHbYLrQLIiId9usd9tNSOp/ahg6q2qN22BXEAXrB84QIz55c4pMqbiIcjmhi97QEoLC1fz9Xgl4JEjK01xGgWSL1JxYdVLWnXiJtow4gIu11BADJaGMJ9HMdAULmt11n33GnMoJPmLsoPniguGg/zyAI0nPIFBFdXGcgdtBVr0TRhSYC9z+QrdfrKyvKz1afViqVBkNzeVmpyWhMS58YHaOuOu5rxU8EQYJIaAQ4SmXE2epT1AdxLsEHiXcK8isrDt88IS1z4WKhEEGQniL05ko81wze+cF7gpoIv0GPIEhPEXpSkjRmLGzglXzBPBRQk6pjR6fNmCnUMtITN+jn5Tq3Fd6LdYcIqsySebkliQEvCU7tu7R4RRfQrNBPzexs5XaknxF6UkJX1Zp+G8gHbEKJXuexujddomF3EskrXqXZQ7f5Vf3iR9azRs2uLhfWIUwv6G711G+br0vdErjMIf2B0A5weJEnQ0bDlblmr2txz7KTu1wrdfZZVJkrVYXPB1Ezy/QVRDsBHRPETcgHOD6Jn+vT1QeHxRX4OGOHIZum5rrddRZWFGhokhmvKGBNhBLq2Dub8xLPPv35/B238opi2M4IhaOcpoyOR0nXpBLdYbriL93/5TNIymawTBUMwUlx9ukcCALAksR0YSzXLgm4B0rN3DRViJjcPbCNuTyGw/tJamZw4ikkJOgLAY4X59cf2l5E4rKnwYfea+4ATpLN8bU88CmvTEhaG8BMREpCcw7Y05Wo2Mre1VU0q9mzfR+rZn1WrmElRVGzd/Oz1wO/rXzsSVbq2uwoobdVW2FoZgx0OkpyZFy1ga3UadiVATZ01fFVmgq2mrhGe4rHeturkx50HZCEpLmkgpZ7LrIFErNZVTif7cD85lTngudlS1mJZk9OXhPstrAe+/mfDHEjUUoQF30uwAHoR39+VS0RBMV5cZ4TT6qrXueBj35vXhNJ6NxFr9zKF9MdsmlUCmkqdK6tW5ZPz0Chz73s1CrbVwPeUKr3JEUHrdrviWdvJP9EYTVLBDLKaFXtKWdA1xb9LmesB209Tn6PGNDJkExtXNGJXUyBIDB8HXbMk/TEB2fqnLtNyPHm2gRVp1qM9Bu65WnXtRbfH2x1bBcfUQM35Ez16bNn6NkVE6OOVqvDZGENDfV1ly5CybDhCcMTRrgeOfEgPnba0kEDq3V73zcnPThsJKn78vXL/PwYr5k7K/xUwTld0tApaQQSVXTuNpyaNYC9gRlEXvj0RPkRah6/aNTNCc3fPav3mOFlxmqeEXDZC/ht5WNP9GSOZ7nLzKDtbJSo6UNTib74IP9eKgyqPeE2gNopafQXOCj0UBjoYZlDKlw74AQajrp81tWPd7ewPxqyTzhKDD+dtCNHjr5Lv6BbpKSp9QJPIf2eqIgufsCQ0CLEvBKXA+Lpp3h5JfGLhkaWOC+ezCsh5exKy7yMK0KaqNIe1w4WLtGe5SzNL93eXomHg0NfW/x4Vc2Rdp7L9FjDQe+rtP9W7fdEcB94b8Ke1DMnJZBRPBwET6/Ew9HwcLi87em4IwzOgainRo9em0OXbna7UYw2rpB/0CvpJ4TG1/meWPfkmdOn3317B51znTFz4/q1T27KKS7aD/KRNGbsxIzJGq32mT9vpKbpBfQWhovavGLhaQsKm7/k6aJy14yju0lRVWFC0uxqVuWc7BRmGSnpiRt2J8UJaWfzIZumrnVOT3r26cZXq0D3hFTlZNB5ls5GUWWWpJLVh/g0B++8Zrumosw9elNhnmH2SB1tC4VbyOusZ4B2PlPXdqDqqu37tXNJxVPrVXTmmFkKsGPiPSKChM43g5OTx71TkC9IieCVCFKyYuUjMWp14b6PKw8f5tb9ECoBI0/4ELJrAHQtdZ+HknriLUYIEirfDL6g0/34PfXYlRERN/0iBcIZSJeWfFV36WJ52bdfHSoGA2bYX2k6eDns8Ywlw3UBRByBkZW67v82f7LMc8LYhWbF4WEnl31X5qsO6a+EhleCBAXPWEyIj3gaQToFpQRBEBEIvUfUEATphaCUIAgiAiglCIKIQFClxGQytv+pZwRB+gBBlRJDc3N0tI9F5xEECXWCKiUN9fXy8PCYGO8vpyEIEvoEe67kgl6vioocrNFgpIMgfYmgPlfiIkatVkVGKhRKnkcQJMTpGSlBEKSPgTeDEQQRAZQSBEFEAKUEQRARQClBEEQEUEoQBBEBlBIEQUQApQRBEBFAKUEQRARQShAEEQGUEgRBRAClBEEQEUApQRBEBFBKEAQRAZQSBEFEAKUEQRAR6BW/VxIerghXKuRhcqlUKpFIoMThcNjtdovVYjaazGaTYIYgSK8lqGsGt0epVEZGRSsUClAPq9VmsVjMZjP8tVqtoCYymVSpjKA/3eiAWitvgyBI76MnA5yo6JgBA1VWi7W1tRUExGazgXwIVZCALBRCFRiAGRgLVQiC9EJ6RkokMok6dhBEM1QpbJ24G2AAZmAMTaAhL0UQpDfRM1ISEx1rt9tMJjPPBwAYQxNoyPMIgvQeCPn/GoTcJG3qm7QAAAAASUVORK5CYII="},80619:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/plugin_settings-031f6d03534360a3799d7adbf8180173.png"},78892:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/plugin_window-74a3e99e913b1314a247702723f4af28.png"},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>r});var i=t(96540);const s={},o=i.createContext(s);function l(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/d99e1931.ad6d4183.js b/Doc/assets/js/d99e1931.ad6d4183.js deleted file mode 100644 index f36cecc2..00000000 --- a/Doc/assets/js/d99e1931.ad6d4183.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[1462],{20040:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>r,toc:()=>a});var i=t(74848),s=t(28453);const o={id:"ue-installation-and-setup",title:"Installation & Setup",slug:"/unreal/installation-and-setup/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/installation-and-setup.mdx"},l=void 0,r={id:"ue-installation-and-setup",title:"Installation & Setup",description:"Adding plugin files to your project",source:"@site/public/en-us/installation-and-setup.mdx",sourceDirName:".",slug:"/unreal/installation-and-setup/",permalink:"/unreal/installation-and-setup/",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/installation-and-setup.mdx",tags:[],version:"current",frontMatter:{id:"ue-installation-and-setup",title:"Installation & Setup",slug:"/unreal/installation-and-setup/",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/installation-and-setup.mdx"},sidebar:"sidebar",previous:{title:"Overview",permalink:"/unreal/"},next:{title:"Getting Started",permalink:"/unreal/getting-started/"}},d={},a=[{value:"Adding plugin files to your project",id:"adding-plugin-files-to-your-project",level:2},{value:"As a git submodule",id:"as-a-git-submodule",level:3},{value:"In a non-git project, or without submodules",id:"in-a-non-git-project-or-without-submodules",level:3},{value:"Enabling the plugin",id:"enabling-the-plugin",level:2},{value:"Plugin configuration",id:"plugin-configuration",level:2},{value:"Using a background thread",id:"using-a-background-thread",level:2},{value:"Using the Live environment",id:"using-the-live-environment",level:2},{value:"Next Steps",id:"next-steps",level:2}];function A(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"adding-plugin-files-to-your-project",children:"Adding plugin files to your project"}),"\n",(0,i.jsxs)(n.p,{children:["Download the Unreal Engine plugin from the ",(0,i.jsx)(n.a,{href:"https://github.com/modio/modio-ue",children:"mod.io GitHub repository"})," using one of the following methods:"]}),"\n",(0,i.jsx)(n.h3,{id:"as-a-git-submodule",children:"As a git submodule"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["In the directory with your ",(0,i.jsx)(n.code,{children:".uproject"})," file, add and download the mod.io plugin as a git submodule with the command:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"git submodule add https://github.com/modio/modio-ue.git Plugins/Modio"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Next, initialize our submodules and dependencies:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.code,{children:"git submodule update --init --recursive"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"in-a-non-git-project-or-without-submodules",children:"In a non-git project, or without submodules"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Grab the latest release zip from the ",(0,i.jsx)(n.a,{href:"https://github.com/modio/modio-ue/releases",children:"releases section"})," on GitHub and extract the contents to your project\u2019s ",(0,i.jsx)(n.code,{children:"Plugins/Modio"})," directory"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.img,{alt:"get_latest_release",src:t(73649).A+"",width:"385",height:"235"})," ",(0,i.jsx)(n.img,{alt:"get_latest_release2",src:t(77655).A+"",width:"366",height:"181"})]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsx)(n.p,{children:"GitHub's automatically generated zips will not work! They do not contain our submodule dependencies. Ensure you download the zip file from the releases page as highlighted above."})}),"\n",(0,i.jsx)(n.h2,{id:"enabling-the-plugin",children:"Enabling the plugin"}),"\n",(0,i.jsx)(n.p,{children:"Start the editor and enable the plugin in the Unreal Engine plugin settings."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"plugin_window",src:t(80101).A+"",width:"1593",height:"633"})}),"\n",(0,i.jsx)(n.h2,{id:"plugin-configuration",children:"Plugin configuration"}),"\n",(0,i.jsx)(n.p,{children:"The plugin requires some initial configuration to behave correctly. You can access these settings in the Project Settings window:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"plugin_settings",src:t(17834).A+"",width:"1577",height:"964"})}),"\n",(0,i.jsx)(n.p,{children:"The settings have the following parameters:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Property"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Game Id"}),(0,i.jsx)(n.td,{children:"Your mod.io-provided Game Id for the target environment"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"API Key"}),(0,i.jsx)(n.td,{children:"Your mod.io-provided API key for the target environment"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Environment"}),(0,i.jsxs)(n.td,{children:["Your target environment, ",(0,i.jsx)(n.code,{children:"Live"})," or ",(0,i.jsx)(n.code,{children:"Test"})]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Log Level"}),(0,i.jsx)(n.td,{children:"The default logging level to use. Messages with a lower log level will be silently discarded."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Portal"}),(0,i.jsx)(n.td,{children:"The default portal to use. This usually corresponds to the store your game will be distributed through."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Use Background Thread"}),(0,i.jsxs)(n.td,{children:["Enables or disables the use of a ",(0,i.jsx)(n.a,{href:"#using-a-background-thread",children:"background thread"})," for the plugin's work."]})]})]})]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["The Test environment is available for usage in limited circumstances only. ",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"/unreal/installation-and-setup/#using-the-live-environment",children:"All games should be set up on the Live environment"})}),". Set your game to ",(0,i.jsx)(n.strong,{children:"hidden"})," to restrict access during the testing phase. If you require access to Test, please contact us."]})}),"\n",(0,i.jsx)(n.h2,{id:"using-a-background-thread",children:"Using a background thread"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#RunPendingHandlers",children:(0,i.jsx)(n.code,{children:"RunPendingHandlers"})})," is responsible for running any pending plugin work, including invoking callbacks passed to asynchronous operations. With ",(0,i.jsx)(n.code,{children:"Use Background Thread"})," set to ",(0,i.jsx)(n.code,{children:"true"}),", the mod.io plugin will automatically spin up a background thread and continually call ",(0,i.jsx)(n.code,{children:"RunPendingHandlers"})," for you. This decouples the frequency of the plugin\u2019s work from your game's main thread, and improves performance of the plugin overall."]}),"\n",(0,i.jsxs)(n.p,{children:["Calling methods from the ",(0,i.jsx)(n.a,{href:"https://docs.mod.io/unrealref/#_modiosubsystem",children:(0,i.jsx)(n.code,{children:"ModioSubsystem"})})," will marshall all callbacks back to the game thread. All other plugin call guarantees remain the same."]}),"\n",(0,i.jsxs)(n.h2,{id:"using-the-live-environment",children:["Using the ",(0,i.jsx)(n.code,{children:"Live"})," environment"]}),"\n",(0,i.jsxs)(n.p,{children:["All games should be set up on the ",(0,i.jsx)(n.code,{children:"Live"})," environment for full access to the mod.io REST API's capabilities."]}),"\n",(0,i.jsxs)(n.p,{children:["If your game or it's modding capabilities are not yet publicly available, set your game to ",(0,i.jsx)(n.strong,{children:"hidden"})," on the ",(0,i.jsx)(n.code,{children:"Live"})," environment. This allows you to restrict access to specific accounts and perform QA against the production environment without exposing your title to the public."]}),"\n",(0,i.jsxs)(n.p,{children:["Once you are ready, change the state from ",(0,i.jsx)(n.strong,{children:"hidden"})," to ",(0,i.jsx)(n.strong,{children:"public"})," for a full release of your game\u2019s modding capabilities."]}),"\n",(0,i.jsx)(n.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Our ",(0,i.jsx)(n.a,{href:"/unreal/getting-started/",children:"Getting Started Guide"})," page contains a series of quick-start guides with code samples demonstrating the plugin's core functionality."]}),"\n",(0,i.jsxs)(n.li,{children:["A sample project demonstrating basic mod.io functionality is available ",(0,i.jsx)(n.a,{href:"https://go.mod.io/ue5-sample",children:"here"}),"."]}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(A,{...e})}):A(e)}},73649:(e,n,t)=>{t.d(n,{A:()=>i});const i="data:image/png;base64,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"},77655:(e,n,t)=>{t.d(n,{A:()=>i});const i="data:image/png;base64,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"},17834:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/plugin_settings-031f6d03534360a3799d7adbf8180173.png"},80101:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/plugin_window-74a3e99e913b1314a247702723f4af28.png"},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>r});var i=t(96540);const s={},o=i.createContext(s);function l(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/fb32500e.b8d34aff.js b/Doc/assets/js/fb32500e.b8d34aff.js deleted file mode 100644 index 56a17cdc..00000000 --- a/Doc/assets/js/fb32500e.b8d34aff.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8950],{44149:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var o=n(74848),r=n(28453),a=n(27064),i=n(89236);const s={id:"ue-edit-mods",title:"Edit an Existing Mod",slug:"/unreal/getting-started/edit-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/edit-mods.mdx"},d=void 0,l={id:"getting-started/ue-edit-mods",title:"Edit an Existing Mod",description:"Mod details can be edited in-game using SubmitModChangesAsync. This function allows you to edit multiple parameters with a single call. It takes a ModioModID of the mod to edit, a ModioEditModParams containing one or more parameters to be altered, and a callback that will contain an optional updated ModioModInfo object on success.",source:"@site/public/en-us/getting-started/edit-mods.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/edit-mods",permalink:"/unreal/getting-started/edit-mods",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/edit-mods.mdx",tags:[],version:"current",frontMatter:{id:"ue-edit-mods",title:"Edit an Existing Mod",slug:"/unreal/getting-started/edit-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/getting-started/edit-mods.mdx"},sidebar:"sidebar",previous:{title:"In-Game Mod Submission",permalink:"/unreal/getting-started/submit-mods"},next:{title:"Error Handling",permalink:"/unreal/getting-started/error-handling"}},u={},c=[];function m(e){const t={a:"a",admonition:"admonition",code:"code",img:"img",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.p,{children:["Mod details can be edited in-game using ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_SubmitModChangesAsync",children:(0,o.jsx)(t.code,{children:"SubmitModChangesAsync"})}),". This function allows you to edit multiple parameters with a single call. It takes a ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#_modiomodid",children:(0,o.jsx)(t.code,{children:"ModioModID"})})," of the mod to edit, a ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#_modioeditmodparams",children:(0,o.jsx)(t.code,{children:"ModioEditModParams"})})," containing one or more parameters to be altered, and a callback that will contain an optional updated ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#_modiomodinfo",children:(0,o.jsx)(t.code,{children:"ModioModInfo"})})," object on success."]}),"\n",(0,o.jsx)(t.admonition,{type:"note",children:(0,o.jsxs)(t.p,{children:["To update the mod file itself, use ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#K2_SubmitNewModFileForMod",children:(0,o.jsx)(t.strong,{children:(0,o.jsx)(t.code,{children:"SubmitNewModFileForMod"})})}),". See ",(0,o.jsx)(t.strong,{children:(0,o.jsx)(t.a,{href:"submit-mods#submitting-a-file-for-a-mod",children:"Submitting a file for a mod"})})," for more information."]})}),"\n",(0,o.jsxs)(a.A,{"group-id":"languages",children:[(0,o.jsx)(i.A,{value:"blueprint",label:"Blueprint",children:(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"edit_mod",src:n(70627).A+"",width:"1155",height:"480"})})}),(0,o.jsxs)(i.A,{value:"c++",label:"C++",default:!0,children:[(0,o.jsxs)(t.p,{children:["Note that it would be more appropriate to pass an ",(0,o.jsx)(t.a,{href:"https://docs.mod.io/unrealref/#_modioeditmodparams",children:(0,o.jsx)(t.code,{children:"FModioEditModParams"})})," with your desired parameters into ",(0,o.jsx)(t.code,{children:"UModioManagerSubsystem::EditMod()"}),". This example shows their creation within the function to illustrate their use."]}),(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-cpp",children:'void UModioManagerSubsystem::EditMod(FModioModID ModID)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tFModioEditModParams EditParams;\n\n \t// Add one or more parameters to edit\n \tEditParams.Name = TEXT("My Edited Mod Name");\n \tEditParams.Summary = TEXT("My edited summary");\n \t\n \tSubsystem->SubmitModChangesAsync(ModID, EditParams, FOnGetModInfoDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnSubmitModChangesComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnSubmitModChangesComplete(FModioErrorCode ErrorCode, FModioOptionalModInfo UpdatedInfo)\n{\n if (!ErrorCode)\n {\n \t// Mod successfully updated. Can display new details from UpdatedInfo etc.\n }\n}\n\n'})})]})]})]})}function h(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(m,{...e})}):m(e)}},19365:(e,t,n)=>{n.d(t,{A:()=>i});n(96540);var o=n(18215);const r={tabItem:"tabItem_Ymn6"};var a=n(74848);function i(e){let{children:t,hidden:n,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,o.A)(r.tabItem,i),hidden:n,children:t})}},11470:(e,t,n)=>{n.d(t,{A:()=>j});var o=n(96540),r=n(18215),a=n(23104),i=n(56347),s=n(205),d=n(57485),l=n(31682),u=n(70679);function c(e){return o.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??function(e){return c(e).map((e=>{let{props:{value:t,label:n,attributes:o,default:r}}=e;return{value:t,label:n,attributes:o,default:r}}))}(n);return function(e){const t=(0,l.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function h(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const r=(0,i.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,d.aZ)(a),(0,o.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(r.location.search);t.set(a,e),r.replace({...r.location,search:t.toString()})}),[a,r])]}function b(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,a=m(e),[i,d]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const o=n.find((e=>e.default))??n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:t,tabValues:a}))),[l,c]=p({queryString:n,groupId:r}),[b,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,a]=(0,u.Dv)(n);return[r,(0,o.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:r}),g=(()=>{const e=l??b;return h({value:e,tabValues:a})?e:null})();(0,s.A)((()=>{g&&d(g)}),[g]);return{selectedValue:i,selectValue:(0,o.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);d(e),c(e),f(e)}),[c,f,a]),tabValues:a}}var f=n(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var M=n(74848);function x(e){let{className:t,block:n,selectedValue:o,selectValue:i,tabValues:s}=e;const d=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=d.indexOf(t),r=s[n].value;r!==o&&(l(t),i(r))},c=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=d.indexOf(e.currentTarget)+1;t=d[n]??d[0];break}case"ArrowLeft":{const n=d.indexOf(e.currentTarget)-1;t=d[n]??d[d.length-1];break}}t?.focus()};return(0,M.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":n},t),children:s.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,M.jsx)("li",{role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,ref:e=>d.push(e),onKeyDown:c,onClick:u,...a,className:(0,r.A)("tabs__item",g.tabItem,a?.className,{"tabs__item--active":o===t}),children:n??t},t)}))})}function v(e){let{lazy:t,children:n,selectedValue:r}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===r));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return(0,M.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==r})))})}function y(e){const t=b(e);return(0,M.jsxs)("div",{className:(0,r.A)("tabs-container",g.tabList),children:[(0,M.jsx)(x,{...t,...e}),(0,M.jsx)(v,{...t,...e})]})}function j(e){const t=(0,f.A)();return(0,M.jsx)(y,{...e,children:c(e.children)},String(t))}},89236:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(19365),r=(n(96540),n(74848));function a(e){return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(o.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(11470),r=(n(96540),n(74848));function a(e){return(0,r.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,r.jsx)(o.A,{...e})})}},70627:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/edit_mod-8edd0021fea77e67b69b6cb394fbe28b.png"},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>s});var o=n(96540);const r={},a=o.createContext(r);function i(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/fb32500e.c21ec9c3.js b/Doc/assets/js/fb32500e.c21ec9c3.js new file mode 100644 index 00000000..bacc279f --- /dev/null +++ b/Doc/assets/js/fb32500e.c21ec9c3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmodio_docs=self.webpackChunkmodio_docs||[]).push([[8950],{44149:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var o=n(74848),r=n(28453),a=n(27064),i=n(89236);const s={id:"ue-edit-mods",title:"Edit an Existing Mod",slug:"/unreal/getting-started/edit-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/edit-mods.mdx"},d=void 0,l={id:"getting-started/ue-edit-mods",title:"Edit an Existing Mod",description:"Mod details can be edited in-game using SubmitModChangesAsync. This function allows you to edit multiple parameters with a single call. It takes a ModioModID of the mod to edit, a ModioEditModParams containing one or more parameters to be altered, and a callback that will contain an optional updated ModioModInfo object on success.",source:"@site/public/en-us/getting-started/edit-mods.mdx",sourceDirName:"getting-started",slug:"/unreal/getting-started/edit-mods",permalink:"/unreal/getting-started/edit-mods",draft:!1,unlisted:!1,editUrl:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/edit-mods.mdx",tags:[],version:"current",frontMatter:{id:"ue-edit-mods",title:"Edit an Existing Mod",slug:"/unreal/getting-started/edit-mods",custom_edit_url:"https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/edit-mods.mdx"},sidebar:"sidebar",previous:{title:"In-Game Mod Submission",permalink:"/unreal/getting-started/submit-mods"},next:{title:"Error Handling",permalink:"/unreal/getting-started/error-handling"}},u={},c=[];function m(e){const t={a:"a",admonition:"admonition",code:"code",img:"img",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.p,{children:["Mod details can be edited in-game using ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#submitmodchangesasync-1",children:(0,o.jsx)(t.code,{children:"SubmitModChangesAsync"})}),". This function allows you to edit multiple parameters with a single call. It takes a ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#modiomodid",children:(0,o.jsx)(t.code,{children:"ModioModID"})})," of the mod to edit, a ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#modioeditmodparams",children:(0,o.jsx)(t.code,{children:"ModioEditModParams"})})," containing one or more parameters to be altered, and a callback that will contain an optional updated ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#modiomodinfo",children:(0,o.jsx)(t.code,{children:"ModioModInfo"})})," object on success."]}),"\n",(0,o.jsx)(t.admonition,{type:"note",children:(0,o.jsxs)(t.p,{children:["To update the mod file itself, use ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#submitnewmodfileformod",children:(0,o.jsx)(t.strong,{children:(0,o.jsx)(t.code,{children:"SubmitNewModFileForMod"})})}),". See ",(0,o.jsx)(t.strong,{children:(0,o.jsx)(t.a,{href:"submit-mods#submitting-a-file-for-a-mod",children:"Submitting a file for a mod"})})," for more information."]})}),"\n",(0,o.jsxs)(a.A,{"group-id":"languages",children:[(0,o.jsx)(i.A,{value:"blueprint",label:"Blueprint",children:(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"edit_mod",src:n(33136).A+"",width:"1155",height:"480"})})}),(0,o.jsxs)(i.A,{value:"c++",label:"C++",default:!0,children:[(0,o.jsxs)(t.p,{children:["Note that it would be more appropriate to pass an ",(0,o.jsx)(t.a,{href:"/unreal/refdocs/#modioeditmodparams",children:(0,o.jsx)(t.code,{children:"FModioEditModParams"})})," with your desired parameters into ",(0,o.jsx)(t.code,{children:"UModioManagerSubsystem::EditMod()"}),". This example shows their creation within the function to illustrate their use."]}),(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-cpp",children:'void UModioManagerSubsystem::EditMod(FModioModID ModID)\n{\n if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem())\n {\n \tFModioEditModParams EditParams;\n\n \t// Add one or more parameters to edit\n \tEditParams.Name = TEXT("My Edited Mod Name");\n \tEditParams.Summary = TEXT("My edited summary");\n \t\n \tSubsystem->SubmitModChangesAsync(ModID, EditParams, FOnGetModInfoDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnSubmitModChangesComplete));\n }\n}\n\nvoid UModioManagerSubsystem::OnSubmitModChangesComplete(FModioErrorCode ErrorCode, FModioOptionalModInfo UpdatedInfo)\n{\n if (!ErrorCode)\n {\n \t// Mod successfully updated. Can display new details from UpdatedInfo etc.\n }\n}\n\n'})})]})]})]})}function h(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(m,{...e})}):m(e)}},19365:(e,t,n)=>{n.d(t,{A:()=>i});n(96540);var o=n(18215);const r={tabItem:"tabItem_Ymn6"};var a=n(74848);function i(e){let{children:t,hidden:n,className:i}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,o.A)(r.tabItem,i),hidden:n,children:t})}},11470:(e,t,n)=>{n.d(t,{A:()=>j});var o=n(96540),r=n(18215),a=n(23104),i=n(56347),s=n(205),d=n(57485),l=n(31682),u=n(70679);function c(e){return o.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??function(e){return c(e).map((e=>{let{props:{value:t,label:n,attributes:o,default:r}}=e;return{value:t,label:n,attributes:o,default:r}}))}(n);return function(e){const t=(0,l.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function h(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:n}=e;const r=(0,i.W6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,d.aZ)(a),(0,o.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(r.location.search);t.set(a,e),r.replace({...r.location,search:t.toString()})}),[a,r])]}function p(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,a=m(e),[i,d]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const o=n.find((e=>e.default))??n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:t,tabValues:a}))),[l,c]=b({queryString:n,groupId:r}),[p,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,a]=(0,u.Dv)(n);return[r,(0,o.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:r}),g=(()=>{const e=l??p;return h({value:e,tabValues:a})?e:null})();(0,s.A)((()=>{g&&d(g)}),[g]);return{selectedValue:i,selectValue:(0,o.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);d(e),c(e),f(e)}),[c,f,a]),tabValues:a}}var f=n(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=n(74848);function M(e){let{className:t,block:n,selectedValue:o,selectValue:i,tabValues:s}=e;const d=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),u=e=>{const t=e.currentTarget,n=d.indexOf(t),r=s[n].value;r!==o&&(l(t),i(r))},c=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=d.indexOf(e.currentTarget)+1;t=d[n]??d[0];break}case"ArrowLeft":{const n=d.indexOf(e.currentTarget)-1;t=d[n]??d[d.length-1];break}}t?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":n},t),children:s.map((e=>{let{value:t,label:n,attributes:a}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,ref:e=>d.push(e),onKeyDown:c,onClick:u,...a,className:(0,r.A)("tabs__item",g.tabItem,a?.className,{"tabs__item--active":o===t}),children:n??t},t)}))})}function v(e){let{lazy:t,children:n,selectedValue:r}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===r));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:a.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==r})))})}function y(e){const t=p(e);return(0,x.jsxs)("div",{className:(0,r.A)("tabs-container",g.tabList),children:[(0,x.jsx)(M,{...t,...e}),(0,x.jsx)(v,{...t,...e})]})}function j(e){const t=(0,f.A)();return(0,x.jsx)(y,{...e,children:c(e.children)},String(t))}},89236:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(19365),r=(n(96540),n(74848));function a(e){return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(o.A,{className:"tw-rounded-md",...e})})}},27064:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(11470),r=(n(96540),n(74848));function a(e){return(0,r.jsx)("div",{className:"tw-border tw-border-solid tw-border-skyblue tw-rounded-md tw-bg-darkslategray tw-p-4 tw-mb-4",children:(0,r.jsx)(o.A,{...e})})}},33136:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/edit_mod-8edd0021fea77e67b69b6cb394fbe28b.png"},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>s});var o=n(96540);const r={},a=o.createContext(r);function i(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/Doc/assets/js/runtime~main.232e3d14.js b/Doc/assets/js/runtime~main.232e3d14.js new file mode 100644 index 00000000..ebae73c4 --- /dev/null +++ b/Doc/assets/js/runtime~main.232e3d14.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,t,r,c,f={},d={};function o(e){var a=d[e];if(void 0!==a)return a.exports;var t=d[e]={exports:{}};return f[e].call(t.exports,t,t.exports,o),t.exports}o.m=f,e=[],o.O=(a,t,r,c)=>{if(!t){var f=1/0;for(i=0;i=c)&&Object.keys(o.O).every((e=>o.O[e](t[b])))?t.splice(b--,1):(d=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[t,r,c]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var c=Object.create(null);o.r(c);var f={};a=a||[null,t({}),t([]),t(t)];for(var d=2&r&&e;"object"==typeof d&&!~a.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,o.d(c,f),c},o.d=(e,a)=>{for(var t in a)o.o(a,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((a,t)=>(o.f[t](e,a),a)),[])),o.u=e=>"assets/js/"+({433:"4b65d6a2",673:"0879cf16",881:"0ce884cc",957:"c141421f",1235:"a7456010",1462:"d99e1931",1493:"8ac087ef",1530:"732ed63c",1567:"22dd74f7",1697:"05ae0fb1",1991:"562207a5",2138:"1a4e3797",2381:"1da2407e",3124:"4f8ccd8c",3586:"8f59627d",4101:"b84ad1c9",4553:"68befa13",4944:"0c9c4b9e",5237:"2969dc70",5533:"4dd573c0",5633:"b2348a3c",5742:"aba21aa0",5753:"7b283257",5973:"433ca74c",6647:"9e4dfacd",6783:"65ba71d8",7098:"a7bd4aaa",7288:"b69370a5",7742:"4d3f9fe4",8156:"c5d35168",8335:"546be59f",8401:"17896441",8840:"cddf829a",8950:"fb32500e",9048:"a94703ab",9647:"5e95c892"}[e]||e)+"."+{416:"9b625bca",433:"3e711868",673:"dca6b1a0",881:"b95aa83e",957:"7bacecc8",1169:"fc010fc9",1176:"16f7cb82",1235:"a5521ac3",1245:"2ad1e165",1303:"812964c2",1331:"cdc427f8",1398:"5b1665cf",1462:"11845b15",1493:"4e5b794d",1530:"d993f088",1567:"ba359d28",1697:"2f8e1093",1946:"39e60b8a",1991:"a07c0f1f",2130:"30a4bfc0",2138:"b722f873",2237:"1e6df7a1",2376:"69b4a2e9",2381:"5245f7dc",2453:"81a3cb3e",2548:"31c1f5eb",2843:"a28e8e47",2925:"8c62ed1d",2983:"3778392d",3068:"e7d489d8",3124:"4c953df7",3586:"be8524c0",3626:"bc638be7",3706:"cfca602d",4101:"ddb378a0",4162:"93988957",4553:"ab7ee46b",4741:"06bee63e",4943:"c267289b",4944:"48f78565",5237:"6db03ace",5533:"3ed96b98",5633:"03af1dd0",5742:"0904d0f0",5753:"06f7fbec",5973:"5daf400e",6420:"52d71345",6647:"74a35171",6783:"3c23f95a",6788:"9b355e3d",6803:"e5a8a35f",7098:"6c02be9e",7106:"e9da2147",7288:"cd361d24",7426:"da722649",7742:"a288788f",8055:"af5b0b47",8156:"d3253ce3",8158:"54ebe1f4",8335:"aa883044",8337:"80c4cdb3",8401:"21dc7276",8478:"58361f63",8635:"8dc2e823",8810:"217c3214",8840:"6ee7539f",8869:"ad329b9e",8913:"bd2bcab1",8950:"c21ec9c3",9048:"3a76c072",9647:"6dcb10e4",9689:"2c1e089a"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},c="modio-docs:",o.l=(e,a,t,f)=>{if(r[e])r[e].push(a);else{var d,b;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var c=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),c&&c.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),b&&document.head.appendChild(d)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var a=o.g.document;if(!e&&a&&(a.currentScript&&(e=a.currentScript.src),!e)){var t=a.getElementsByTagName("script");if(t.length)for(var r=t.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=t[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e+"../../"})(),o.gca=function(e){return e={17896441:"8401","4b65d6a2":"433","0879cf16":"673","0ce884cc":"881",c141421f:"957",a7456010:"1235",d99e1931:"1462","8ac087ef":"1493","732ed63c":"1530","22dd74f7":"1567","05ae0fb1":"1697","562207a5":"1991","1a4e3797":"2138","1da2407e":"2381","4f8ccd8c":"3124","8f59627d":"3586",b84ad1c9:"4101","68befa13":"4553","0c9c4b9e":"4944","2969dc70":"5237","4dd573c0":"5533",b2348a3c:"5633",aba21aa0:"5742","7b283257":"5753","433ca74c":"5973","9e4dfacd":"6647","65ba71d8":"6783",a7bd4aaa:"7098",b69370a5:"7288","4d3f9fe4":"7742",c5d35168:"8156","546be59f":"8335",cddf829a:"8840",fb32500e:"8950",a94703ab:"9048","5e95c892":"9647"}[e]||e,o.p+o.u(e)},(()=>{var e={5354:0,1869:0};o.f.j=(a,t)=>{var r=o.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise(((t,c)=>r=e[a]=[t,c]));t.push(r[2]=c);var f=o.p+o.u(a),d=new Error;o.l(f,(t=>{if(o.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var c=t&&("load"===t.type?"missing":t.type),f=t&&t.target&&t.target.src;d.message="Loading chunk "+a+" failed.\n("+c+": "+f+")",d.name="ChunkLoadError",d.type=c,d.request=f,r[1](d)}}),"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,t)=>{var r,c,f=t[0],d=t[1],b=t[2],n=0;if(f.some((a=>0!==e[a]))){for(r in d)o.o(d,r)&&(o.m[r]=d[r]);if(b)var i=b(o)}for(a&&a(t);n{"use strict";var e,a,t,c,r,f={},o={};function d(e){var a=o[e];if(void 0!==a)return a.exports;var t=o[e]={exports:{}};return f[e].call(t.exports,t,t.exports,d),t.exports}d.m=f,e=[],d.O=(a,t,c,r)=>{if(!t){var f=1/0;for(i=0;i=r)&&Object.keys(d.O).every((e=>d.O[e](t[b])))?t.splice(b--,1):(o=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[t,c,r]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var r=Object.create(null);d.r(r);var f={};a=a||[null,t({}),t([]),t(t)];for(var o=2&c&&e;"object"==typeof o&&!~a.indexOf(o);o=t(o))Object.getOwnPropertyNames(o).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,d.d(r,f),r},d.d=(e,a)=>{for(var t in a)d.o(a,t)&&!d.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,t)=>(d.f[t](e,a),a)),[])),d.u=e=>"assets/js/"+({433:"4b65d6a2",673:"0879cf16",881:"0ce884cc",957:"c141421f",1235:"a7456010",1462:"d99e1931",1493:"8ac087ef",1530:"732ed63c",1567:"22dd74f7",1697:"05ae0fb1",1991:"562207a5",2138:"1a4e3797",2381:"1da2407e",3124:"4f8ccd8c",3586:"8f59627d",4101:"b84ad1c9",4553:"68befa13",4944:"0c9c4b9e",5237:"2969dc70",5533:"4dd573c0",5633:"b2348a3c",5742:"aba21aa0",5753:"7b283257",5973:"433ca74c",6647:"9e4dfacd",6783:"65ba71d8",7098:"a7bd4aaa",7288:"b69370a5",7742:"4d3f9fe4",8156:"c5d35168",8335:"546be59f",8401:"17896441",8840:"cddf829a",8950:"fb32500e",9048:"a94703ab",9647:"5e95c892"}[e]||e)+"."+{416:"9b625bca",433:"b96e2355",673:"dca6b1a0",881:"b95aa83e",957:"7bacecc8",1169:"fc010fc9",1176:"16f7cb82",1235:"a5521ac3",1245:"2ad1e165",1303:"812964c2",1331:"cdc427f8",1398:"5b1665cf",1462:"ad6d4183",1493:"27a161e3",1530:"5c782035",1567:"ba359d28",1697:"2f8e1093",1946:"39e60b8a",1991:"b60eadca",2130:"30a4bfc0",2138:"b722f873",2237:"1e6df7a1",2376:"69b4a2e9",2381:"9927ed81",2453:"81a3cb3e",2548:"31c1f5eb",2843:"a28e8e47",2925:"8c62ed1d",2983:"3778392d",3068:"e7d489d8",3124:"be71a477",3586:"f96d3965",3626:"bc638be7",3706:"cfca602d",4101:"2d53dc4b",4162:"93988957",4553:"ab7ee46b",4741:"06bee63e",4943:"c267289b",4944:"33716226",5237:"3fd40665",5533:"c971e0ef",5633:"612bac9c",5742:"0904d0f0",5753:"06f7fbec",5973:"ab83666c",6420:"52d71345",6647:"0af8d679",6783:"9f5de872",6788:"9b355e3d",6803:"e5a8a35f",7098:"6c02be9e",7106:"e9da2147",7288:"93b89783",7426:"da722649",7742:"a288788f",8055:"af5b0b47",8156:"34c70772",8158:"54ebe1f4",8335:"aab0b80d",8337:"80c4cdb3",8401:"21dc7276",8478:"58361f63",8635:"8dc2e823",8810:"217c3214",8840:"11002d8d",8869:"ad329b9e",8913:"bd2bcab1",8950:"b8d34aff",9048:"3a76c072",9647:"6dcb10e4",9689:"2c1e089a"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},r="modio-docs:",d.l=(e,a,t,f)=>{if(c[e])c[e].push(a);else{var o,b;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i{o.onerror=o.onload=null,clearTimeout(s);var r=c[e];if(delete c[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),b&&document.head.appendChild(o)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;d.g.importScripts&&(e=d.g.location+"");var a=d.g.document;if(!e&&a&&(a.currentScript&&(e=a.currentScript.src),!e)){var t=a.getElementsByTagName("script");if(t.length)for(var c=t.length-1;c>-1&&(!e||!/^http(s?):/.test(e));)e=t[c--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),d.p=e+"../../"})(),d.gca=function(e){return e={17896441:"8401","4b65d6a2":"433","0879cf16":"673","0ce884cc":"881",c141421f:"957",a7456010:"1235",d99e1931:"1462","8ac087ef":"1493","732ed63c":"1530","22dd74f7":"1567","05ae0fb1":"1697","562207a5":"1991","1a4e3797":"2138","1da2407e":"2381","4f8ccd8c":"3124","8f59627d":"3586",b84ad1c9:"4101","68befa13":"4553","0c9c4b9e":"4944","2969dc70":"5237","4dd573c0":"5533",b2348a3c:"5633",aba21aa0:"5742","7b283257":"5753","433ca74c":"5973","9e4dfacd":"6647","65ba71d8":"6783",a7bd4aaa:"7098",b69370a5:"7288","4d3f9fe4":"7742",c5d35168:"8156","546be59f":"8335",cddf829a:"8840",fb32500e:"8950",a94703ab:"9048","5e95c892":"9647"}[e]||e,d.p+d.u(e)},(()=>{var e={5354:0,1869:0};d.f.j=(a,t)=>{var c=d.o(e,a)?e[a]:void 0;if(0!==c)if(c)t.push(c[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((t,r)=>c=e[a]=[t,r]));t.push(c[2]=r);var f=d.p+d.u(a),o=new Error;d.l(f,(t=>{if(d.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var r=t&&("load"===t.type?"missing":t.type),f=t&&t.target&&t.target.src;o.message="Loading chunk "+a+" failed.\n("+r+": "+f+")",o.name="ChunkLoadError",o.type=r,o.request=f,c[1](o)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,t)=>{var c,r,f=t[0],o=t[1],b=t[2],n=0;if(f.some((a=>0!==e[a]))){for(c in o)d.o(o,c)&&(d.m[c]=o[c]);if(b)var i=b(d)}for(a&&a(t);nGetIdentityInterface(); + +OnlineIdentity->AddOnLoginCompleteDelegate_Handle(0, NativeLoginComplete); +OnlineIdentity->Login(0, FOnlineAccountCredentials()); + +// In the NativeLoginComplete delegate, however you set it up, if it was a successful login, you can then obtain the Server Auth Token as follows: +FString IdToken, ServerAuthToken; + +UserAccount.Get()->GetAuthAttribute(AUTH_ATTR_ID_TOKEN, IdToken); +UserAccount.Get()->GetAuthAttribute(AUTH_ATTR_AUTHORIZATION_CODE, ServerAuthToken); + +// Now perform Auth to the mod.io service +AuthParams.AuthToken = ServerAuthToken; +AuthParams.bUserHasAcceptedTerms = true; + +// Alternatively you could set AuthParams.AuthToken = IdToken and use EModioAuthenticationProvider::GoogleIDToken +ModioSubsystem->AuthenticateUserExternalAsync(AuthParams, EModioAuthenticationProvider::GoogleServerSideToken, FOnErrorOnlyDelegateFast::CreateUObject(this, OnAuthenticationComplete)); +``` + +## Single Sign-On (Pre-5.4) + +For Unreal Engine versions before 5.4, you need to make some engine-level modifications in order for Android SSO to work. You must be using a source build rather than an engine build. + +Open `Engine\Plugins\Online\OnlineSubsystemGoogle\Source\ThirdParty\Android\Java\GoogleLogin.java` and change the `init` method to uncomment `.requestServerAuthCode(serverClientId)`. + +Change the `getAuthTokenJsonStr` method to the following: + +```cpp +private String getAuthTokenJsonStr(GoogleSignInAccount acct) +{ + if (acct != null) + { + return "{\"access_token\":\""+ acct.getServerAuthCode() + "\"," + + "\"refresh_token\":\"androidInternal\"," + + "\"id_token\":\""+ acct.getIdToken() + "\"}"; + } + return ""; +} +``` + +Finally, Open OnlineSubsystemGoogle.uplugin and add Android to the `PlatformAllowList` array. + +### Configuration + +Once you have made the above changes, update your AndroidEngine.ini to contain the following: + +``` +[OnlineSubsystem] +DefaultPlatformService=GooglePlay +NativePlatformService=Google + +[OnlineSubsystemGoogle] +bEnabled=True +ClientId=your-client-id-here +ServerClientId=your-server-client-id-here + +[OnlineSubsystemGoogle.OnlineIdentityGoogle] ++ScopeFields="email" ++ScopeFields="profile" ++ScopeFields="https://www.googleapis.com/auth/userinfo.email" ++ScopeFields="https://www.googleapis.com/auth/userinfo.profile" +``` + +This will ensure that you are using OnlineSubsystemGoogle as the native platform OSS in order to perform SSO. + +Ensure that you replace the ClientId and ServerClientId with your client IDs from Google Cloud Console. The ClientId should be the Android OAuth Credential that you have linked to your title in Google Play Console. ServerClientId should be the Web Application OAuth Credential that you configured. + +### Getting the Token + +Once you have configured the above options, you should be able to obtain a server side token that you can use for auth with mod.io. + +```cpp +const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::GetByPlatform(); +const IOnlineIdentityPtr OnlineIdentity = OnlineSubsystem->GetIdentityInterface(); + +OnlineIdentity->AddOnLoginCompleteDelegate_Handle(0, NativeLoginComplete); +OnlineIdentity->Login(0, FOnlineAccountCredentials()); + +// In the NativeLoginComplete delegate, however you set it up, if it was a successful login, you can then obtain the Server Auth Token as follows: +const FString PlatformToken = OnlineIdentity->GetAuthToken(0); + +// Now perform Auth to the mod.io service +AuthParams.AuthToken = PlatformToken; +AuthParams.bUserHasAcceptedTerms = true; + +ModioSubsystem->AuthenticateUserExternalAsync(AuthParams, EModioAuthenticationProvider::GoogleServerSideToken, FOnErrorOnlyDelegateFast::CreateUObject(this, OnAuthenticationComplete)); +``` \ No newline at end of file diff --git a/Doc/doc_root/en-us/asset-support-for-mods.mdx b/Doc/doc_root/en-us/asset-support-for-mods.mdx new file mode 100644 index 00000000..75618445 --- /dev/null +++ b/Doc/doc_root/en-us/asset-support-for-mods.mdx @@ -0,0 +1,124 @@ +--- +id: ue-asset-support-for-mods +title: Asset Support for Mods +slug: /unreal/asset-support-for-mods/ +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/asset-support-for-mods +--- + +## Overview + +The main factor for supporting assets is dependency: only dependencies to the project's content are allowed, but not engine's dependency. When trying to package any asset that has engine dependency, it will fail. + +Some assets have internal dependencies which can't be bypassed without modifying the engine's source code. For example, when trying to create a directional light or point light in the level, you'll have an `EmptyActor` dependency to the engine - packaging of that asset and consequently the whole mod will fail. Therefore, you should generally avoid using any engine's assets dependency (except for very basic ones, such as dependency to `AActor` class), and instead create your own classes in your project and implement the necessary functionality there, and allow the mod to use those classes instead of the engine's ones. + +## Supported Asset Types + +### Allowed Actors In Levels + +These actors, including custom actors derived from them and saved in the project or mod, can be placed in levels without causing packaging issues in the mod: + +1. `AStaticMeshActor` +2. `APlayerStart` +3. `APawn` + - `ACharacter` + - `ADefaultPawn` + - All other derived actors +4. `ABrush` & `AVolume` + - `AKillZVolume` + - `ABlockingVolume` + - `AAudioVolume` + - `ACullDistanceVolume` + - `APostProcessVolume` + - All other derived actors +5. `ADecalActor` +6. `AInfo` + - `AVolumetricCloud` + - `AExponentialHeightFog` + - Other supported derived actors +7. `ATriggerBase` + - `ATriggerBox` + - `ATriggerCapsule` + - `ATriggerSphere` + - All other derived actors + +### Allowed Components in Actors + +These components, including custom components derived from them and saved in the project or mod, can be placed in actors without causing packaging issues in the mod: + +1. `USceneComponent` + - `UPrimitiveComponent` + - `UTextRenderComponent` + - `UArrowComponent` + - `UShapeComponent` (collisions) + - `UBoxComponent` + - `UCapsuleComponent` + - `USphereComponent` + - `UMeshComponent` + - `UStaticMeshComponent` + - `UWidgetComponent` + - All other derived components + - `UCameraComponent` + - `UChildActorComponent` + - `UText3DComponent` + - Other supported derived components +2. `UWidgetComponent` +3. `UCameraComponent` +4. `UDecalComponent` +5. `UMovementComponent` + - `UPawnMovementComponent` + - `UCharacterMovementComponent` + - All other derived components +- All other derived components + +## Unsupported Asset Types + +### Prohibited Actors in Levels + +These actors, including custom actors derived from them and saved in the project or mod, should not be placed in levels as they will likely cause packaging issues in the mod: + +1. `ALight` + - `ADirectionalLight` + - `APointLight` + - `ARectLight` + - `ASpotLight` +2. `AInfo` + - `ASkyLight` + - `ASkyAtmosphere` + - Other unsupported derived actors +3. `ASkyAtmosphere` +4. `ATextRenderActor` + - Other unsupported derived actors + +### Prohibited Components in Actors + +These components, including custom components derived from them and saved in the project or mod, should not be placed in actors as they will likely cause packaging issues in the mod: + +1. `USceneComponent` + - `ULightComponentBase` + - `UDirectionalLightComponent` + - `ULightComponent` + - `ULocalLightComponent` + - `UPointLightComponent` + - `URectLightComponent` + - `USkyLightComponent` + - `USpotLightComponent` + - `USynthComponent` + - `UAudioComponent` + - Other unsupported derived components + +## Asset Support in Packages (UPackage) + +Generally, all possible asset types are supported to be included in the plugin after the packaging. The tested ones are listed below, but any other assets without dependency on the engine are supported as well, such as manually created ones in the mod itself: + +- Actor +- Pawn +- Character +- Actor Component +- Scene Component +- Level +- Material +- Widget +- Texture +- Sound Wave +- Static Mesh +- Skeletal Mesh \ No newline at end of file diff --git a/Doc/doc_root/en-us/getting-started/browsing-mods.mdx b/Doc/doc_root/en-us/getting-started/browsing-mods.mdx new file mode 100644 index 00000000..b4e3b86c --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/browsing-mods.mdx @@ -0,0 +1,56 @@ +--- +id: ue-browsing-mods +title: Browsing Mods +slug: /unreal/getting-started/browsing-mods +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/browsing-mods.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +After [initializing the plugin](initialization) and [authenticating a user](user-authentication), you can query the available mods using [`ListAllModsAsync`](/unreal/refdocs/#listallmodsasync). + +`ListAllModsAsync` supports filtering by name, tag, author, mature content, and more using [`ModioFilterParams`](/unreal/refdocs/#modiofilterparams). You can sort results as specified by `ModioSortFieldType`, and request paginated or indexed results. By default, `ModioFilterParams` asks for the first 100 results (the maximum number returnable in a query) sorted by `ModioModID`. + + + +The primary way this is done is through [K2_ListAllModsAsync](/unreal/refdocs/#listallmodsasync). + +![list_all_mods](img/list_all_mods.png) + +To search for a specific query string, sort in a different order, or combine different filters, you can use a [ModioFilterParams](/unreal/refdocs/#modiofilterparams) object like this: + +![list_all_mods_filter](img/list_all_mods_filter.png) + + + + ```cpp +void UModioManagerSubsystem::ListAllMods() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + FModioFilterParams Filter; + // Build the filter by chaining together multiple calls + Filter.PagedResults(1, 5).IndexedResults(3, 5).WithTags("Multiplayer").SortBy(EModioSortFieldType::ID, EModioSortDirection::Descending); + + Subsystem->ListAllModsAsync(Filter, FOnListAllModsDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnListAllModsComplete)); + } +} + +void UModioManagerSubsystem::OnListAllModsComplete(FModioErrorCode ErrorCode, TOptional OptionalModList) +{ + // Ensure ListAllModsAsync was successful + if (!ErrorCode) + { + // ModList is guaranteed to be valid if there is no error + TArray ModInfoArray = OptionalModList.GetValue().GetRawList(); + + // Do something with ModInfoArray + + // You can use OptionalModList().GetValue().Paged related methods to make further paginated requests if required + } +} + + ``` + + \ No newline at end of file diff --git a/Doc/doc_root/en-us/getting-started/edit-mods.mdx b/Doc/doc_root/en-us/getting-started/edit-mods.mdx new file mode 100644 index 00000000..ad475ef4 --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/edit-mods.mdx @@ -0,0 +1,52 @@ +--- +id: ue-edit-mods +title: Edit an Existing Mod +slug: /unreal/getting-started/edit-mods +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/edit-mods.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Mod details can be edited in-game using [`SubmitModChangesAsync`](/unreal/refdocs/#submitmodchangesasync-1). This function allows you to edit multiple parameters with a single call. It takes a [`ModioModID`](/unreal/refdocs/#modiomodid) of the mod to edit, a [`ModioEditModParams`](/unreal/refdocs/#modioeditmodparams) containing one or more parameters to be altered, and a callback that will contain an optional updated [`ModioModInfo`](/unreal/refdocs/#modiomodinfo) object on success. + +:::note +To update the mod file itself, use [**`SubmitNewModFileForMod`**](/unreal/refdocs/#submitnewmodfileformod). See **[Submitting a file for a mod](submit-mods#submitting-a-file-for-a-mod)** for more information. +::: + + + +![edit_mod](img/edit_mod.png) + + + + +Note that it would be more appropriate to pass an [`FModioEditModParams`](/unreal/refdocs/#modioeditmodparams) with your desired parameters into `UModioManagerSubsystem::EditMod()`. This example shows their creation within the function to illustrate their use. + + ```cpp +void UModioManagerSubsystem::EditMod(FModioModID ModID) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + FModioEditModParams EditParams; + + // Add one or more parameters to edit + EditParams.Name = TEXT("My Edited Mod Name"); + EditParams.Summary = TEXT("My edited summary"); + + Subsystem->SubmitModChangesAsync(ModID, EditParams, FOnGetModInfoDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnSubmitModChangesComplete)); + } +} + +void UModioManagerSubsystem::OnSubmitModChangesComplete(FModioErrorCode ErrorCode, FModioOptionalModInfo UpdatedInfo) +{ + if (!ErrorCode) + { + // Mod successfully updated. Can display new details from UpdatedInfo etc. + } +} + +``` + + + \ No newline at end of file diff --git a/Doc/doc_root/en-us/getting-started/error-handling.mdx b/Doc/doc_root/en-us/getting-started/error-handling.mdx new file mode 100644 index 00000000..0e8332cb --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/error-handling.mdx @@ -0,0 +1,68 @@ +--- +id: ue-error-handling +title: Error Handling +slug: /unreal/getting-started/error-handling +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/error-handling.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +:::note +Error handling in Blueprint is still undergoing improvement. Please let us know if you have any feedback or suggestions for improving it! +::: + +Many of the plugin's functions utilize the [`ModioErrorCode`](/unreal/refdocs/#modioerrorcode) type. For example, all [async](/unreal/getting-started/plugin-structure/#non-blocking-asynchronous-interface) functions take a `ModioErrorCode` as the first parameter for the function's delegate. This is essentially an opaque wrapper around a numeric error code with a category and an associated string message. + +### Checking for errors + +A "truthy" error code represents an error. In Blueprint, you can check if a `ModioErrorCode` represents a success or failure by using the `IsError` node. + + + + + +![is_error](img/is_error.png) + + + ```cpp +void UModioManagerSubsystem::MyCallback(FModioErrorCode ErrorCode) +{ + if (ErrorCode) + { + // Failure + } + else + { + // Success + } +} +``` + + + +### Inspecting `ModioErrorCode` more deeply + +Sometimes this information will be all that is required; just a simple 'success/fail' that you can handle. + +In many cases, however, you will want to perform some degree of inspection on an `ModioErrorCode` to determine specific information about that error - if nothing else, so that you can display a reason for the failure to the end user. + +#### Semantic queries + +In your application, there are many errors that will likely be handled the same way. For example, you probably don’t need to handle different network errors in different ways. The semantics of networking errors are largely "try the function again later". + +This is where [`ErrorCodeMatches`](/unreal/refdocs/#error-code-matches) comes in. It allows you to query if the error satisfies a particular condition, such as "does this code represent some kind of networking error", without needing to explicitly check the code against all the individual errors in the category. + +![error_code_matches_network_error](img/error_code_matches_network_error.png) + +By querying if an error meets a specific condition, you can focus on handling a family of errors (in this case, network transmission errors) without needing to deal with individual errors within that group. No more manually checking against individual HttpError values, just a single query. + +These semantic checks help you to consolidate your error handling into limited set of generic error handlers rather than dealing with each potential outcome individually. + +![error_code_matches_chaining](img/error_code_matches_chaining.png) + +### Parameter validation errors + +Some of the plugin functions may return errors that indicate a parameter or data validation failure. For these cases, the plugin parses the error response from the mod.io API and stores the information about which parameters failed validation until the next network request is performed. If a plugin function returns an error which matches `EModioErrorCondition::InvalidArgsError`, you can call `GetLastValidationError` in your callback to retrieve those errors and display appropriate feedback to the end user. + +![get_last_validation_error](img/get_last_validation_error.png) \ No newline at end of file diff --git a/Doc/doc_root/en-us/getting-started/getting-started.mdx b/Doc/doc_root/en-us/getting-started/getting-started.mdx new file mode 100644 index 00000000..18e70c48 --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/getting-started.mdx @@ -0,0 +1,23 @@ +--- +id: ue-getting-started +title: Getting Started +slug: /unreal/getting-started/ +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/getting-started.mdx +--- + +Below are a series of quick-start guides with code samples demonstrating the mod.io Unreal Engine plugin's core functionality. + +### Quick-Start Guides + +- [Plugin Structure & Concepts](plugin-structure) +- [Initialization & Teardown](initialization) +- [User Authentication](user-authentication) +- [Browsing Mods](browsing-mods) +- [Mod Subscriptions & Management](mod-subscriptions) +- [Error Handling](error-handling) +- [In-Game Mod Submission](submit-mods) +- [Edit an Existing Mod](edit-mods) +- [Monetization](monetization) +- [Temporary Mod Sets](temporary-mods) +- [Muting & Unmuting a User](mute-user) +- [Metrics Play Sessions](metrics-play-sessions) \ No newline at end of file diff --git a/Doc/doc_root/en-us/getting-started/initialization.mdx b/Doc/doc_root/en-us/getting-started/initialization.mdx new file mode 100644 index 00000000..6a0d72b5 --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/initialization.mdx @@ -0,0 +1,100 @@ +--- +id: ue-initialization +title: Initialization & Teardown +slug: /unreal/getting-started/initialization +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/initialization.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +## Best practices + +This guide describes the mod.io Unreal Engine plugin's basic event loop, intialization, and shutdown functions. Ideally, you should wrap these functions in a separate subsystem (e.g. `ModioManagerSubsystem`) which is responsible for managing the full initialization and authentication flow for your game. + +For more information, see our [User Authentication](user-authentication) quick-start guide. + +## Calling RunPendingHandlers +Before initializing the plugin, ensure [`RunPendingHandlers`](/unreal/refdocs/#run-pending-handlers) is being continually called. You can do this yourself in your project’s main loop, or by setting [`Use Background Thread`](/unreal/installation-and-setup/#using-a-background-thread) to true in the mod.io project settings. For best performance, `RunPendingHandlers` should be called at least once per frame. See [Maintaining the plugin event loop](/unreal/getting-started/plugin-structure/#maintaining-the-plugin-event-loop) for additional information. + +## Initialization +The mod.io Unreal Engine plugin is initialized by calling [`InitializeAsync`](/unreal/refdocs/#initializeasync), passing in a [`ModioInitializeOptions`](/unreal/refdocs/#modioinitializeoptions) with the relevant information for the current session, and a callback containing a [`ModioErrorCode`](/unreal/refdocs/#modioerrorcode) that will contain the result of the initialization on completion. + +Use [`GetProjectInitializeOptionsForSessionId`](/unreal/refdocs/#get-project-initialize-options-for-session-id) to initialize the plugin using the information entered in the [mod.io project settings](/unreal/installation-and-setup/#plugin-configuration). On Windows, [`GetDefaultSessionIdWindows`](/unreal/refdocs/#get-default-session-id-windows) can be used as the [Session ID](/unreal/getting-started/plugin-structure/#session-ids). Some platforms also require additional parameters added to `ModioInitializeOptions.ExtendedInitializationParameters`. Refer to the relevant [platform documentation](/platforms/) for more information. + + + + + ```cpp +void UModioManagerSubsystem::Init() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->InitializeAsync(UModioSDKLibrary::GetProjectInitializeOptionsForSessionId(UModioSDKLibrary::GetDefaultSessionIdWindows()), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnInitCallback)); + } + UE_LOG(LogModioGame, Log, TEXT("Initializing mod.io")); +} + +void UModioManagerSubsystem::OnInitCallback(FModioErrorCode ErrorCode) +{ + UE_LOG(LogModioGame, Log, TEXT("mod.io initialization complete with result: %s"), *ErrorCode.GetErrorMessage()); +} + +void UModioManagerSubsystem::Tick(float DeltaTime) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->RunPendingHandlers(); + } +} +``` + + + ![run_pending_handlers](img/run_pending_handlers.png) + + ![initasync_getoptions](img/initasync_getoptions.png) + + + + +:::note +* The error-handling in this sample has been omitted. See our [**Error Handling quick-start guide**](error-handling) for more information. +* `InitializeAsync` is a asynchronous function, therefore you *must* wait for the callback for confirmation that the initialization is complete. +::: + +## Shutdown + +The mod.io Unreal Engine plugin is shut down by calling [`ShutdownAsync`](/unreal/refdocs/#shutdownasync) in a similar fashion. + + + + + ```cpp +void UModioManagerSubsystem::Shutdown() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->ShutdownAsync(FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnShutdownComplete)); + } +} + +void UModioManagerSubsystem::OnShutdownComplete(FModioErrorCode ErrorCode) +{ + UE_LOG(LogModioGame, Log, TEXT("Shutdown complete with result: %s"), *ErrorCode.GetErrorMessage()); +} +``` + + + +![shutdownasync_runhandlers](img/shutdownasync_runhandlers.png) + + + + + + +:::note +* You *must* continue to call [**`RunPendingHandlers`**](/unreal/refdocs/#run-pending-handlers) while shutdown is in progress to allow intermediate handlers to complete. +* Any in-flight mod.io async calls will complete with an error code indicating cancellation. +* You *must not* call **`ShutdownAsync`** from within another completion handler/callback. This may cause the application to deadlock. +::: diff --git a/Doc/doc_root/en-us/getting-started/metrics-play-sessions.mdx b/Doc/doc_root/en-us/getting-started/metrics-play-sessions.mdx new file mode 100644 index 00000000..4b63ba6e --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/metrics-play-sessions.mdx @@ -0,0 +1,147 @@ +--- +id: ue-metrics-play-sessions +title: Metrics Play Sessions +slug: /unreal/getting-started/metrics-play-sessions +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/metrics-play-sessions.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +The mod.io Unreal Engine Plugin supports all of the mod.io metrics features, allowing you to start a metrics play sesion, keeping that session alive via a heartbeat (automatically called, or manually handled) and then ending that session. Metric sessions allow you to track which mods your players interact with most frequently. Visit https://docs.mod.io/metrics/ for an overview of the mod.io metrics system. + +:::note +Running metrics play sessions is a premium feature. If you are interested in mod.io premium features, please contact developers@mod.io. +::: + +The Metrics session functionality is all accessible through the `ModioSubsystem` class. + +Metrics based on the platform and portal, are transparently taken care of with no additional consideration needed when using the SDK. + +#### Initialization + +The mod.io metrics features are enabled as part of generating a Metrics Secret Key your API settings in your game dashboard, e.g. https://mod.io/g/game-name/admin/api-key. Once this key has been generated, you need to pass it in as an ExtendedInitializationParameters entry in your InitializeOptions when Initializing the mod.io SDK, e.g.: + + +```cpp +FModioInitializeOptions initializeOptions; +initializeOptions.ExtendedInitializationParameters.Add("MetricsSecretKey", "00000000-1111-2222-3333-444444444444"); +``` + +Failing to set up the Metrics Secret Key will result in a `SessionNotInitialized`` error being returned when using the metrics functionality. + +#### Starting a Metrics Session + +You can call [MetricsSessionStartAsync](/unreal/refdocs/#metricssessionstartasync) to start a new session tracking the usage of mods in the context of your game. You'll notice that `MetricsSessionStartAsync` takes a [MetricsSessionParams](/unreal/refdocs/#modiometricssessionparams) struct as its parameter. This contains an optional Session Id, as well as a required vector of mods to track. + +:::note +If a Session Id is not provided, a random one will be created for you. +::: + + + + + ![metrics_session_start_1](img/metrics_session_start_1.png) + +:::note +Use the `SetSessionId` node if you want to associate your own Id with this session. +::: + + ![metrics_session_start_2](img/metrics_session_start_2.png) + + + + +```cpp +FModioMetricsSessionParams Params = FModioMetricsSessionParams(ModIds); + +void UModioManager::MetricsSessionStart(const FModioMetricsSessionParams& Params) +{ + GEngine->GetEngineSubsystem()->MetricsSessionStartAsync( + Params, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionStartCallback)); +} +``` + + + + +The Metrics Session Params accepts an optional Session Id in the form of a `FModioGuid` which you may want to use to associate the new session with any supplementary telemetry you are gathering in your game. + +#### Metrics heartbeat + +To ensure that the session is kept alive, a heartbeat is required to be submitted at most every 5 minutes. We recommend doing this a bit earlier than the threshold to ensure you do not miss the window. + +There are two methods provided to control the behaviour of the heart beat, [MetricsSessionSendHeartbeatOnceAsync](/unreal/refdocs/#metricssessionsendheartbeatonceasync) which you can call at your desired precision, as well as a single call and forget [MetricsSessionSendHeartbeatAtIntervalAsync](/unreal/refdocs/#metricssessionsendheartbeatatintervalasync) with a desired interval. + +Calling `MetricsSessionSendHeartbeatOnceAsync` will submit a single heartbeat, and return an error code if something went wrong. If no error has occured, the heartbeat has been successfully sent. + + + + + + ![metrics_session_heartbeat](img/metrics_session_heartbeat.png) + + + + +```cpp +void UModioManager::MetricsSessionHeartbeat() +{ + GEngine->GetEngineSubsystem()->MetricsSessionSendHeartbeatOnceAsync( + FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionHeartbeatCallback)); +} +``` + + + + +Calling `MetricsSessionSendHeartbeatAtIntervalAsync` requires a parameter with the desired interval frequency in seconds. An error code will be returned if something went wrong, otherwise you will receive a false-y error if the interval loop has been shut down successfully (such as ending a session). + + + + + + ![metrics_session_heartbeat_interval](img/metrics_session_heartbeat_interval.png) + + + + +```cpp +const FModioUnsigned64 IntervalSeconds(150); + +void UModioManager::MetricsSessionHeartbeat(const FModioUnsigned64& IntervalSeconds) +{ + GEngine->GetEngineSubsystem()->MetricsSessionSendHeartbeatAtIntervalAsync( + IntervalSeconds, + FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionHeartbeatCallback)); +} +``` + + + + +#### Ending a Metrics Session + +To complete a session, for example when finishing a match, or quitting out of your game, you can call [MetricsSessionEndAsync](/unreal/refdocs/#metricssessionendasync). +As with the other calls, you will receive an error if anything has gone wrong, otherwise the operation successfully completed. + + + + + + ![metrics_session_end](img/metrics_session_end.png) + + + + + +```cpp +void UModioManager::MetricsSessionHeartbeat() +{ + GEngine->GetEngineSubsystem()->MetricsSessionEndAsync( + FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManager::MetricsSessionHeartbeatCallback)); +} +``` + + + \ No newline at end of file diff --git a/Doc/doc_root/en-us/getting-started/monetization.mdx b/Doc/doc_root/en-us/getting-started/monetization.mdx new file mode 100644 index 00000000..8e8270aa --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/monetization.mdx @@ -0,0 +1,245 @@ +--- +id: ue-monetization +title: Monetization +slug: /unreal/getting-started/monetization +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/monetization.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +The mod.io Unreal Engine Plugin supports a range of monetization features, allowing you to sell a per-game virtual currency to your players that they can use to purchase mods, with a share of the revenue split between creators and your studio. An overview of the mod.io monetization system is available [here](/monetization/). + +Every platform requires specific setup for monetization features to work, particularly with respect to the virtual currency configuration and API calls. The following documentation is generically applicable. Platform-specific information is available in the relevant [platform documentation section](/platforms/). + +## Initialization + +The mod.io monetization features are enabled during the onboarding process on your [game profile](https://mod.io/g). + +Ensure that you have set the appropriate `Portal` when [initializing the plugin](initialization). For instance, on Steam you must initialize with `EModioPortal::Steam` to redeem entitlements for Steam. + +## Getting the user's wallet + +On startup, you can make a call to `UModioSubsystem::GetUserWalletBalanceAsync` to get the balance of the current user's wallet. If no wallet exists for the user, one will be automatically created for them. This call returns the user's wallet balance for the current game. + +The only time you need to make this call is on start-up. We recommend that you cache the value of this result in your game code rather than making consistent calls to `UModioSubsystem::GetUserWalletBalanceAsync`, and update your local state from the return values of other calls that affect wallet balance. + + + + + ![get_user_wallet](img/get_user_wallet.png) + + + + + ```cpp +void UModioManagerSubsystem::GetUserWallet() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->GetUserWalletBalanceAsync(FOnGetUserWalletBalanceDelegate::CreateUObject(this, &UModioManagerSubsystem::OnGetUserWalletComplete)); + } +} + +void UModioManagerSubsystem::OnGetUserWalletComplete(FModioErrorCode ErrorCode, FModioOptionalUInt64 WalletBalance) +{ + if (!ErrorCode) + { + // Wallet balance successfully retrieved + } +} +``` + + + + +## Querying mods + +As part `UModioSubsystem::ListAllModsAsync`, you can include an additional filter for whether you list paid mods. By default, only free mods are shown. Set `RevenueType` on the `ModioFilterParams` object passed to `UModioSubsystem::ListAllModsAsync` to include free and paid content, or just paid content. All mods returned will have a `Price` property, indicating the virtual currency price that must be paid to purchase that mod. + +Filtering for Paid/Unpaid content is not currently exposed to Blueprint. + +## Purchasing mods + +Call `UModioSubsystem::PurchaseModAsync` to purchase a specified mod. `PurchaseModAsync` takes two parameters: the `ModioModID` of the mod to purchase, and the `ExpectedPrice`, which is the price displayed to the user from `UModioSubsystem::ListAllModsAsync`. You must include this parameter for safety so the user is not charged more or less than the price displayed to them, in case the price of the mod has changed between the call to `ListAllModsAsync` and purchase time. + +Once a mod is purchased, it is automatically subscribed to for the user. + +You should validate that the user has enough virtual currency to make the purchase by comparing it to the balance you received from `UModioSubsystem::GetUserWalletBalanceAsync`. This is purely for user experience (e.g. for graying out the purchase button in the UI, or upselling the user a virtual currency pack); `UModioSubsystem::PurchaseModAsync` will return an error if the user has insufficient funds in their wallet. + +An updated wallet balance (with the purchase amount subtracted) is returned in the callback of `UModioSubsystem::PurchaseModAsync`. + + + + + ![purchase_mod](img/purchase_mod.png) + + + + + ```cpp +void UModioManagerSubsystem::PurchaseMod(FModioModID ModId, FModioUnsigned64 ExpectedPrice) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->PurchaseModAsync(ModId, ExpectedPrice, FOnPurchaseModDelegate::CreateUObject(this, &UModioManagerSubsystem::OnPurchaseModComplete)); + } +} + +void UModioManagerSubsystem::OnPurchaseModComplete(FModioErrorCode ErrorCode, FModioOptionalTransactionRecord Transaction) +{ + if (!ErrorCode) + { + // Mod purchase successful + } +} +``` + + + + +## Showing user purchases + +While purchased mods are automatically subscribed and installed at purchase time, the user can freely unsubscribe and uninstall purchased mods and they and they will remain owned and purchased by the user. They must re-subscribe to the mod to have it re-installed. Use `UModioSubsystem::FetchUserPurchasesAsync` to fetch an updated list of a user's purchased mods from the server. After a successful call, you can then display the user's purchased mods with `UModioSubsystem::QueryUserPurchasedMods`, allowing re-subscription as desired. + + + + + ![show_user_purchases](img/show_user_purchases.png) + + + + + ```cpp +void UModioManagerSubsystem::FetchUserPurchases() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->FetchUserPurchasesAsync(FOnFetchUserPurchasesDelegate::CreateUObject(this, &UModioManagerSubsystem::OnFetchUserPurchasesComplete)); + } +} + +void UModioManagerSubsystem::OnFetchUserPurchasesComplete(FModioErrorCode ErrorCode) +{ + if (!ErrorCode) + { + // Purchases Successfully Fetched + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + // We can now access the list of purchased mods directly + TMap PurchasedMods = Subsystem->QueryUserPurchasedMods(); + } + } +} +``` + + + + +## Getting a user delegation token + +User delegation tokens can be used by a backend server for S2S (Server to Server) transactions. You can get one for the current user by calling `UModioSubsystem::GetUserDelegationTokenAsync`, the callback for which contains the token as an `FString`. + + + + + + ![get_user_delegation_token](img/get_user_delegation_token.png) + + + + + ```cpp +void UModioManagerSubsystem::GetUserDelegationToken() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->GetUserDelegationTokenAsync(FOnGetUserDelegationTokenDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnGetUserDelegationTokenCallback)); + } +} + +void UModioManagerSubsystem::OnGetUserDelegationTokenCallback(FModioErrorCode ErrorCode, FString UserDelegationToken) +{ + if (!ErrorCode) + { + // Successfully got User Delegation Token + } +} +``` + + + + + +## Listing and Purchasing Premium Currency + +The Monetization premium features mod.io includes the ability to show the relevant platform store (where possible), which allows the user to purchase virtual currency, top up their wallet, and purchase Premium UGC all without leaving the game. + +This functionality is exposed in one of two ways. + +### Displaying the Native Platform Store + +The recommended method is to simply call `UModioUISubsystem::RequestShowTokenPurchaseUIWithHandler` which will attempt to show the appropriate Platform Native storefront via Unreal's `IOnlineSubsystem`. This function will return an `EModioOpenStoreResult` indicating whether call succeeded or not. + +`FailedInactive` indicates that the Monetization feature is disabled in the base Mod.io plugin settings. + +`FailedUnsupportedPlatform` means that the current platform has not implemented its native storefront in the Unreal Engine Online Subsystem, and so you will have to implement your own method for getting and displaying purchasable items. An example/template of this can be found in the ComponentUI reference design, see below for more information. + +`FailedUnknown` is a catch-all for other error types, such as inactive online subsystems, network issues, etc, and you should check the relevant logs for any pertinent information. + +`Success` means that the platform store UI is being displayed, and you can then listen for the `Callback` to handle any resulting purchases. This `Callback` only indicates whether the Store was opened and closed successfully, not whether the user made a purchase or not. There is also `UModioUISubsystem::RequestShowTokenPurchaseUI` for instances where a Callback is not needed. + + + + + + ![ShowPlatformStoreUI](img/ShowPlatformStoreUI.png) + + + + +### Displaying Component UI Store Offers + +In cases where native store display is not supported, there is a provided template UI component for displaying and listing product offers within the Component UI itself. + +Found at `ModioComponentUI/Content/UI/Templates/Default/WBP_ModioDefaultTokenPackBrowser` this Widget provides a framework and example of querying a set of product offers, displaying them, and purchasing them through the platform store. + +NOTE: With either the Native or Component UI methods, the refreshing and consumption of purchased Entitlements, as well as the updating of the user's Wallet Balance, is left up to you the developer due to platform limitations. + +## Consuming User Entitlements + +User Entitlements are virtual currency packs/products that the user can purchase through their relevant platform store. These Entitlements can then be consumed; in the case of virtual currency, adding balance to their mod.io wallet for use purchasing UGC. + +Once a user has purchased a virtual currency pack on a given store those entitlements must be consumed before they can be used. To do so you can call `UModioSubsystem::RefreshUserEntitlementsAsync` which takes in `FModioEntitlementParams` and a `FOnRefreshUserEntitlementsDelegateFast` as a Callback, returning an `FModioErrorCode` and `TOptional` indicating the status of the user’s entitlements. + +`FModioEntitlementParams` is to be populated with the Delegation Token received from `UModioSubsystem::GetUserDelegationTokenAsync`. + + + + +```cpp +// Get the relevant platform authentication token prior to making this call. +void UModioManager::RefreshUserEntitlements(const FString& PlatformAuthToken) +{ + if (GEngine->GetEngineSubsystem()) + { + FModioEntitlementParams Params; + Params.ExtendedParams.Add("auth_code", PlatformAuthToken); + GEngine->GetEngineSubsystem()->RefreshUserEntitlementsAsync(Params, FOnRefreshUserEntitlementsDelegateFast::CreateUObject(this, &UModioManager::OnRefreshUserEntitlementsCallback)); + } +} + +void UModioManager::OnRefreshUserEntitlementsCallback(FModioErrorCode ErrorCode, TOptional ConsumptionStatusList) +{ + if (ErrorCode == false) + { + // Successfully refreshed entitlements. + } +} +``` + + + + +After entitlements are refreshed successfully any classes properly implementing the `ModioUIWalletBalanceUpdatedEventReceiver` interface will receive the updated balance. + diff --git a/Doc/doc_root/en-us/getting-started/mute-user.mdx b/Doc/doc_root/en-us/getting-started/mute-user.mdx new file mode 100644 index 00000000..78497d3a --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/mute-user.mdx @@ -0,0 +1,124 @@ +--- +id: ue-mute-user +title: Muting and Unmuting a User +slug: /unreal/getting-started/mute-user +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/mute-user.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Users have the ability to disable updates from other user’s mods. This will prevent mod.io from returning mods authored by the muted user. There are three actions available to take: mute a user, unmute a user, and list muted users + +:::note +To perform any of these actions, the muting user must be authenticated. +::: + +## Mute a user + +To mute a user, call [`MuteUserAsync`](/unreal/refdocs/#muteuserasync) with the corresponding `ModioUserID` and a callback. + + + + + +![mute_user](img/mute_user.png) + + + + + + ```cpp + +void UModioManagerSubsystem::MuteAUser(FModioUserID UserID) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->MuteUserAsync(UserID, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnMuteUserComplete)); + } +} + +void UModioManagerSubsystem::OnMuteUserComplete(FModioErrorCode ErrorCode) +{ + if (!ErrorCode) + { + // User successfully muted + } +} + +``` + + + + +## Unmute a user + +To perform the inverse operation call [`UnmuteUserAsync`](/unreal/refdocs/#unmuteuserasync) with the corresponding `ModioUserID` and a callback. + + + + + +![unmute_user](img/unmute_user.png) + + + + + + ```cpp + +void UModioManagerSubsystem::UnmuteAUser(FModioUserID UserID) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->UnmuteUserAsync(UserID, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnUnmuteUserComplete)); + } +} + +void UModioManagerSubsystem::OnUnmuteUserComplete(FModioErrorCode ErrorCode) +{ + if (!ErrorCode) + { + // User successfully unmuted + } +} +``` + + + + +## List muted users + +[`GetMutedUsersAsync`](/unreal/refdocs/#getmutedusersasync) returns a list of users previously muted by an authenticated user. + + + + +![get_muted_users](img/get_muted_users.png) + + + + + + ```cpp + +void UModioManagerSubsystem::ListMutedUsers() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->GetMutedUsersAsync(FOnMuteUsersDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnListMutedUsersComplete)); + } +} + +void UModioManagerSubsystem::OnListMutedUsersComplete(FModioErrorCode ErrorCode, FModioOptionalUserList MutedUsers) +{ + if (!ErrorCode) + { + // List of muted users successfully retrieved + } +} + +``` + + + \ No newline at end of file diff --git a/Doc/doc_root/en-us/getting-started/plugin-structure.mdx b/Doc/doc_root/en-us/getting-started/plugin-structure.mdx new file mode 100644 index 00000000..19bdd258 --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/plugin-structure.mdx @@ -0,0 +1,136 @@ +--- +id: ue-plugin-structure +title: Plugin Structure & Concepts +slug: /unreal/getting-started/plugin-structure/ +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/plugin-structure.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +## `ModioSubsystem` +The mod.io Unreal Engine Plugin consumes our [Native SDK](/cppsdk/) internally, and its public API is similar. The Native SDK exposes a number of free functions within the `Modio` namespace, and this plugin wraps those functions in a [Subsystem](https://dev.epicgames.com/documentation/en-us/unreal-engine/programming-subsystems-in-unreal-engine). + +The lifetime of the [`ModioSubsystem`](/unreal/refdocs/#modiosubsystem) is automatically managed by the engine and provides a convenient way to access the plugin's functionality. This is broadly grouped into the following categories: + +* Plugin management (initialization, teardown, event loop) +* User authentication +* Mod browsing and querying +* Mod management (subscription, unsubscription, and installation) + +## Value objects +All data returned by the plugin is presented using a small set of `USTRUCTs`, containing information such as: + +* Details for mods that are available for installation +* Progress information about mods being installed +* Details and load paths for installed mods + +As structs, these are value types, so if you want to hold onto them once you’ve shut down the plugin you can do so. They do not expose any methods that "talk back" to the `ModioSubsystem`, so their methods are safe to call. This allows you, for instance, to initialize the plugin, query the installed mods, and retain that list even after shutting down the plugin and its event loop. + +## UTF-8 guarantees + +The plugin uses UTF8 for all strings, as does the mod.io REST API. + +## Thread-safety guarantees + +The mod.io plugin is thread-safe with the exception of [`RunPendingHandlers`](/unreal/refdocs/#run-pending-handlers). If you are calling `RunPendingHandlers` manually, you must always call it on the same thread. + +:::note +The plugin event loop, any internal event handlers, and all callbacks you provide to the mod.io plugin will be run on the thread invoking `RunPendingHandlers`. +::: + +## Non-blocking, asynchronous interface + +The plugin communicates with the mod.io servers, the filesystem on the device you’re using, and platform-provided services for authentication. These may not return results immediately, so many functions provided by the `ModioSubsystem` are non-blocking and asynchronous. + +:::note +All async methods in the public API end with the suffix `Async`. +::: + +### Callback conventions + +All of these asynchronous methods take a delegate as an argument, which will be invoked **exactly once** with the results of the requested operation. Every async callback takes a [`ModioErrorCode`](/unreal/refdocs/#modioerrorcode) as its first parameter, with any optional results wrapped in `TOptional` so that you can easily check if a result is valid. + +Async functions should not be considered complete until their callback is invoked. For example, although `InitializeAsync` returns immediately, you must wait for its callback (with a successful `ModioErrorCode`) before you are able to call any other functions from the `ModioSubsystem`. + +Any return values provided to your callback are passed-by-value; the plugin doesn’t expect you to have to call `release` or otherwise free up resources given to you. + +:::note +Even if the plugin is shut down while asynchronous operations are in-flight, your delegates will still be invoked **exactly once**. In this instance, the `ModioErrorCode` the delegate receives will indicate a cancellation state, and you should check for this as part of your error handling in your delegates. +::: + +### Maintaining the plugin event loop + +In order to provide a non-blocking implementation, the plugin operates an internal event loop. This event loop will only ever run on the thread which calls [`RunPendingHandlers`](/unreal/refdocs/#run-pending-handlers). `RunPendingHandlers` is the function we provide to tick the internal event loop and process any pending work the plugin needs to perform. + +You should either enable the [configuration setting](/unreal/installation-and-setup/#plugin-configuration) to allow the plugin to manage a background thread which automatically calls `RunPendingHandlers`, or invoke it on tick in the game thread yourself. + +:::note +This means that if you stop calling `RunPendingHandlers`, any pending asynchronous API methods you have called will not complete and their associated callbacks will not be invoked, nor will the internal data allocated for those operations be freed. +::: + +## Error handling + +Many of the plugin's functions utilize the [`ModioErrorCode`](/unreal/refdocs/#modioerrorcode) type. For example, all [async](#non-blocking-asynchronous-interface) functions take a `ModioErrorCode` as the first parameter for the function's delegate. This is essentially an opaque wrapper around a numeric error code with a category and an associated string message. + +The plugin doesn’t attempt to predict what your error-handling logic or requirements are. Instead, we return the error code to you so you can decide what to do. For instance, if you call a function and receive an error code matching a network error condition, do you want to close down the plugin? Retry again according to custom back-off logic? That decision is left to the consuming application. + +For more details on the error codes and how to inspect their values, please see our [Error Handling quick-start guide](/unreal/getting-started/error-handling). + +## User sessions + +The mod.io plugin runs on a per-platform-user basis. If you are using the plugin on a platform that requires user switching support, you must call [`ShutdownAsync`](/unreal/refdocs/#shutdownasync) and re-initialize the plugin by calling [`InitializeAsync`](/unreal/refdocs/#initializeasync) with a different [Session ID](#session-ids). + +Generating a stable platform-specific Session ID for each user will ensure that an incoming user who has already authenticated with mod.io on the current device and game won’t need to re-authenticate unless their authentication token has expired. + +### Session IDs +Session IDs are chosen by the developer. They can be whatever you like as long as they are deterministic and stable. Session IDs create a scope or a local profile for the current user to live in so that a single system can support multiple authenticated users side-by-side without requiring de-authentication of the previous user. Internally, the Session ID is used to create a folder containing the authentication information and cached profile of the authenticated user. + +On console platforms, we suggest that the Session ID should be a string representation of the platform-provided user ID. This gives the best experience when it comes to things like user switching. For example, a game on Xbox using a sanitized string representation of the Xbox Live ID as the Session ID would have a folder structure in persistent storage like the following: + +``` +/mod.io/// +/mod.io/// +``` + +With this example, you can detect the user associated with the current controller on game start and initialize the mod.io plugin with the Session ID set to the stable string representation of that user's Xbox Live ID. As a result, the user's authentication status will be maintained from the previous session on that device. + +In the case of a Windows title with user-provided profile names, the same folder structure would be more like the following: + +``` +%USERDATA%/mod.io//ProfileName1/ +%USERDATA%/mod.io//ProfileName2/ +%USERDATA%/mod.io//ProfileName3/ +``` + +This allows multiple players, for example siblings, to each have their own session living in the same Windows account. + +## Mod data directory + +The plugin stores mods in a game-specific directory in the following directory by default: + +| Windows | Linux | macOS | iOS | +| --- | --- | --- | --- | +| `${FolderID_Public}/mod.io` | `${USER_HOME}/mod.io` | `${USER_HOME}/Library/Application Support/mod.io` | `${APP-DIRECTORY}/Documents/mod.io` | + +However, this value can be overridden in one of two ways: + +### Globally for a system account + + On first run of a game using the plugin, `${FOLDERID_LocalAppData}/mod.io/globalsettings.json` will be created. + + This JSON object contains a `RootLocalStoragePath` element - changing the string here to a valid path on disk will globally redirect the mod installation directory for **ALL** games using the mod.io Unreal Engine Plugin or Native SDK for the current system account. + + :::warning + Changing this value while the SDK is initialized is not supported and behaviour is undefined. + ::: + +### Per-game for a system account + + Per-game settings are stored in `${FOLDERID_LocalAppData}/mod.io/${GameId}/${mod.io user string}/user.json`. + + Adding a `RootLocalStoragePath` element to this file will redirect the mod installation directory for this specific game only for the current system account. Removing this value will cause the game to revert back to the global value in `globalsettings.json`. + +:::note +In Linux and macOS, mods and cached data binds to a single user. Other client have their own instance in their home directory. +::: \ No newline at end of file diff --git a/Doc/doc_root/en-us/getting-started/submit-mods.mdx b/Doc/doc_root/en-us/getting-started/submit-mods.mdx new file mode 100644 index 00000000..7275eb0e --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/submit-mods.mdx @@ -0,0 +1,89 @@ +--- +id: ue-submit-mods +title: In-Game Mod Submission +slug: /unreal/getting-started/submit-mods +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/submit-mods.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Submitting a mod from inside your game and making it visible to other players involves two steps: + +* Submission of the mod +* Submission of the mod’s data (aka "the mod file") + +These steps are outlined below. Mods can also be edited after submission, as [detailed here](edit-mods) + +## Submitting a new mod + +To submit a mod, you must first create a mod handle using [`GetModCreationHandle`](/unreal/refdocs/#getmodcreationhandle), and use that handle when calling [`SubmitNewModAsync`](/unreal/refdocs/#submitnewmodasync). Note that the newly created mod will remain hidden until a mod file is added in the next step. + + + +![submit_new_mod](img/submit_new_mod.png) + + + + ```cpp +void UModioManagerSubsystem::SubmitNewMod() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + FModioModCreationHandle Handle = Subsystem->GetModCreationHandle(); + + FModioCreateModParams Params; + Params.Name = TEXT("My Amazing Mod"); + Params.Description = TEXT("This mod does amazing things"); + Params.PathToLogoFile = TEXT("C:\\path\\to\\image.png"); + + Subsystem->SubmitNewModAsync(Handle, Params, FOnSubmitNewModDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnSubmitNewModComplete)); + } +} + +void UModioManagerSubsystem::OnSubmitNewModComplete(FModioErrorCode ErrorCode, TOptional ModId) +{ + if (!ErrorCode) + { + // Mod was successfully submitted + // We can now call SubmitNewModFileForMod with this ModId + } +} +``` + + + +## Submitting a file for a mod + +Once you have successfully submitted a mod, you can submit a mod file for that mod using [`SubmitNewModFileForMod`](/unreal/refdocs/#submitnewmodfileformod). When you submit a mod file, you pass a [`ModioCreateModFileParams`](/unreal/refdocs/#modiocreatemodfileparams) containing the directory containing all the files that you want to submit. The plugin will compress this folder into a .zip file and upload it as the active version of the mod. + +In the future, if the mod is updated and requires a new mod file, `SubmitNewModFileForMod` can be called again. The most recent mod file uploaded by `SubmitNewModFileForMod` will be set as the active version. + +:::note +There is no callback for `SubmitNewModFileForMod`; you’ll be notified of the completed upload by your [**mod management callback**](mod-subscriptions#installation-management). +::: + + + + +After the callback for submitting a mod has completed, you can get the Mod Id to use for file submission. + +![submit_new_mod_file](img/submit_new_mod_file.png) + + + + + ```cpp +void UModioManagerSubsystem::SubmitNewModFile(FModioModID ModId) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + FModioCreateModFileParams Params; + Params.PathToModRootDirectory = TEXT("C:\\path\\to\\mod-folder"); + Subsystem->SubmitNewModFileForMod(ModId, Params); + } +} +``` + + + \ No newline at end of file diff --git a/Doc/doc_root/en-us/getting-started/subscriptions.mdx b/Doc/doc_root/en-us/getting-started/subscriptions.mdx new file mode 100644 index 00000000..9d28b755 --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/subscriptions.mdx @@ -0,0 +1,253 @@ +--- +id: ue-mod-subscriptions +title: Mod Subscriptions & Management +slug: /unreal/getting-started/mod-subscriptions +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/mod-subscriptions.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +So you’ve [shown the user some mods](browsing-mods), and they've picked one they’d like to install. How do you begin the installation process? Once the mod is installed, how do you know what files to load into memory? + +## Mod subscriptions + +Users indicate they want to install a mod by **subscribing** to it. Subscriptions are stored on the mod.io servers and are associated with a user’s mod.io account, so subscribed mods for a given game will be installed to all devices where a user logs into mod.io for that game. Similarly, when a user **unsubscribes** from a mod, that mod will be uninstalled from every device they’re logged into mod.io with for that game. + +Subscriptions are managed with calls to either [`SubscribeToModAsync`](/unreal/refdocs/#subscribetomodasync) or [`UnsubscribeFromModAsync`](/unreal/refdocs/#unsubscribefrommodasync) containing the desired `ModioModID` and a delegate to receive the status of the request. + +:::note +To subscribe or unsubscribe from a mod, [**`EnableModManagement`**](/unreal/refdocs/#enablemodmanagement) *must* be called beforehand. +::: + +`SubscribeToModAsync` also takes a bool indicating whether or not to to subscribe to any and all dependencies for the given `ModioModID`. + +:::note +When dependencies are included in the `SubscribeToModAsync` call, they will *not* download automatically. **Only the primary mod specified by `ModioModID` will download automatically.** To download all subscribed content including dependencies, call [`FetchExternalUpdatesAsync`](/unreal/refdocs/#fetchexternalupdatesasync) after `SubscribeToModAsync` successfully completes. +::: + + + + +![subscribe_to_mod](img/subscribe_to_mod.png) + +![unsubscribe_from_mod](img/unsubscribe_from_mod.png) + + + + + ```cpp +void UModioManagerSubsystem::SubscribeToMod(FModioModID ModToSubscribeTo, bool IncludeDependencies) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->SubscribeToModAsync(ModId, IncludeDependencies, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnSubscribeToModComplete, ModId)); + } +} + +void UModioManagerSubsystem::OnSubscribeToModComplete(FModioErrorCode ErrorCode, FModioModID ModId) +{ + if (!ErrorCode) + { + // Indicate success to your user. This ModId's files will begin installing. + // Call FetchExternalUpdatesAsync if dependencies were included + } +} + +void UModioManagerSubsystem::UnsubscribeFromMod(FModioModID ModId) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->UnsubscribeFromModAsync(ModId, FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnUnsubscribeFromModComplete, ModId)); + } +} + +void UModioManagerSubsystem::OnUnsubscribeFromModComplete(FModioErrorCode ErrorCode, FModioModId ModId) +{ + if (!ErrorCode) + { + // Indicate success to your user. This ModID's files will begin uninstalling. + } +} +``` + + + + +## External subscription changes + +Because mod.io's services are available via our website, users can manage their subscriptions outside of your application. This means that we need to be able to query the server for any external subscription changes. + +Call [`FetchExternalUpdatesAsync`](/unreal/refdocs/#fetchexternalupdatesasync) to synchronise the server state with the plugin’s local subscriptions. Any required installations or uninstallations based on the updated user subscriptions will be processed automatically. + + + + +![fetch_external_updates](img/fetch_external_updates.png) + + + + + + ```cpp + +void UModioManagerSubsystem::FetchExternalUpdates() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->FetchExternalUpdatesAsync(FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnFetchExternalUpdatesComplete)); + } +} + +void UModioManagerSubsystem::OnFetchExternalUpdatesComplete(FModioErrorCode ErrorCode) +{ + // error handling etc. +} + +``` + + + +:::warning +Call [`FetchExternalUpdatesAsync`](/unreal/refdocs/#fetchexternalupdatesasync) sparingly, only when required to ensure that the local state is up-to-date such as on game start-up or based on user input (i.e. as a button on your UI). It should **NOT** be called on tick. +::: + +## Checking the user subscription list + +To see which mods the user has subscribed to, call [`QueryUserSubscriptions`](/unreal/refdocs/#query-user-subscriptions). This retrieves a `TMap` of [`ModioModCollectionEntry`](/unreal/refdocs/#modiomodcollectionentry) objects, one for each subscribed mod. Each `ModioModCollectionEntry` object contains the mod’s state, profile information, ID and more. + +:::note +This collection includes mods that are still in the process of being installed! Make sure to check the result of [`GetModState`](/unreal/refdocs/#get-mod-state) before attempting to load files from the mods in this collection. Alternatively, use [`QueryUserInstallations`](/unreal/refdocs/#query-user-installations) as described in [**Retrieving mod directory paths for loading**](#retrieving-mod-directory-paths-for-loading). +::: + + + + +![query_user_subscriptions](img/query_user_subscriptions.png) + + + + + + ```cpp +void UModioManagerSubsystem::QueryUserSubscriptions() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + TMap SubscribedMods = Subsystem->QueryUserSubscriptions(); + // Do something with SubscribedMods e.g. display on a UI + } +} +``` + + + +## Installation management + +So a subscription marks a mod as requiring installation, and an unsubscription indicates uninstallation, but how do you actually control when the plugin **does** those things? After all, you don’t want a mod to be uninstalled after your main program has loaded those files into memory, locking them from deletion. Likewise, you probably don’t want to be using networking or processor resources during gameplay for downloading mods. To give you control over when these processes occur without forcing you to shut down the plugin, you can call [`EnableModManagement`](/unreal/refdocs/#enablemodmanagement) and [`DisableModManagement`](/unreal/refdocs/#disable-mod-management). + +To notify your users when a mod is finished installing or updating, [`EnableModManagement`](/unreal/refdocs/#enablemodmanagement) asks you to provide it with a callback. This callback will be invoked **every time** a [`ModioModManagementEvent`](/unreal/refdocs/#modiomodmanagementevent) occurs i.e. whenever a mod is installed, updated, uninstalled, or uploaded by the plugin’s internal event loop. This behavior persists until a corresponding call to [`DisableModManagement`](/unreal/refdocs/#disable-mod-management) or [`ShutdownAsync`](/unreal/refdocs/#shutdownasync) is made. + +:::note +[`EnableModManagement`](/unreal/refdocs/#enablemodmanagement) is not an async function. It does not end with the `*Async` suffix. Its callback operates differently to asynchronous result callbacks used elsewhere in the mod.io plugin. +::: + + + +![enable_mod_management](img/enable_mod_management.png) + + + + ```cpp +void UModioManagerSubsystem::EnableModManagement() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->EnableModManagement(FOnModManagementDelegateFast::CreateUObject(this, &UModioManagerSubsystem::ModManagementCallback)); + } +} + +void UModioManagerSubsystem::ModManagementCallback(FModioModManagementEvent ModManagementEvent) +{ + if (ModManagementEvent.Status) + { + // error handling + } + switch(ModManagementEvent.Event) + { + case EModioModManagementEventType::BeginInstall: + case EModioModManagementEventType::BeginUninstall: + case EModioModManagementEventType::BeginUpdate: + case EModioModManagementEventType::BeginUpload: + UE_LOG(LogModioGame, Log, TEXT("Begin processing Mod %s"), *ModManagementEvent.ID.ToString()); + break; + case EModioModManagementEventType::Installed: + UE_LOG(LogModioGame, Log, TEXT("Received an Installed event for Mod %s"), *ModManagementEvent.ID.ToString()); + break; + case EModioModManagementEventType::Uninstalled: + UE_LOG(LogModioGame, Log, TEXT("Received an Uninstalled event for Mod %s"), *ModManagementEvent.ID.ToString()); + break; + case EModioModManagementEventType::Updated: + UE_LOG(LogModioGame, Log, TEXT("Received an Updated event for Mod %s"), *ModManagementEvent.ID.ToString()); + break; + case EModioModManagementEventType::Uploaded: + UE_LOG(LogModioGame, Log, TEXT("Received an Uploaded event for Mod %s"), *ModManagementEvent.ID.ToString()); + break; + default:; + } +} +``` + + + +While mod management is enabled, the plugin assumes that it has the ability to make changes to the filesystem, including deleting mods that the user has no longer subscribed to. As a result you should make sure that you don’t have any open handles to files inside the mod directories when you call [`EnableModManagement`](/unreal/refdocs/#enablemodmanagement). + +When you want to be able to freely open files in the mod directories, call [`DisableModManagement`](/unreal/refdocs/#disable-mod-management). The plugin will finish the current operation but will not continue any others. + +Call [`IsModManagementBusy`](/unreal/refdocs/#is-mod-management-busy) to see if mod management is currently processing a mod. + + + + + ```cpp +void UModioManagerSubsystem::DisableModManagement() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + if (!Subsystem->IsModManagementBusy()) + { + Subsystem->DisableModManagement(); + } + } +} +``` + + + +### Retrieving mod directory paths for loading + +So now we have the user picking mods and marking them for installation, we’re enabling mod management at a point where we don’t mind the plugin changing the filesystem, and mods are being installed by the plugin. We now need to know where they are on disk, otherwise you can’t load them into your game! + +The easiest way to do this is by using [`QueryUserInstallations`](/unreal/refdocs/#query-user-installations). This function returns a `TMap` of [`ModioModCollectionEntry`](/unreal/refdocs/#modiomodcollectionentry) objects that can be queried for folder paths to use for loading a mod's files into your game. `QueryUserInstallations` also allows you to specify whether or not to include outdated mods. + + + + ```cpp +void UModioManagerSubsystem::GetInstalledMods() +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + TMap InstalledMods = Subsystem->QueryUserInstallations(false); + + // Do something with each installed mod, ie adding paths/loading the content appropriately + } +} +``` + + + +![query_user_installations](img/query_user_installations.png) + + + + \ No newline at end of file diff --git a/Doc/doc_root/en-us/getting-started/temporary-mods.mdx b/Doc/doc_root/en-us/getting-started/temporary-mods.mdx new file mode 100644 index 00000000..c8b24768 --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/temporary-mods.mdx @@ -0,0 +1,58 @@ +--- +id: ue-temporary-mods +title: Temporary Mod Sets +slug: /unreal/getting-started/temporary-mods +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/temporary-mods.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +In some situations, you may want mods to only exist on a temporary basis. For instance, in multiplayer environments where you don't want to subscribe a user to a piece of content. Temporary mod sets allow management of these transient pieces of content separately from subscriptions. Temp mod sets do not require authentication, however mod management must still be enabled. + +Temp mods are downloaded to a separate folder from subscriptions, and are not updated or handled when you call `FetchExternalUpdatesAsync`. That means you can prioritize download and installation of temp mods outside of the regular subscription flow. + +To use temp mods, you can start a `TempModSet` by calling `InitTempModSet` and passing a list of `ModioModIDs` to be downloaded and extracted. At any time while a `TempModSet` is open, you can call [`AddToTempModSet`](/unreal/refdocs/#addtotempmodset) to add mods to the set. These will be instantly downloaded and extracted. If you no longer need a mod, you can call [`RemoveFromTempModSet`](/unreal/refdocs/#removefromtempmodset) which will remove the file. Once you have finished with a `TempModSet`, call [`CloseTempModSet`](/unreal/refdocs/#closetempmodset) which will delete all temporary mods. Temporary mods are also deleted the next time you re-initialize the mod.io plugin. + +Like regular mods, temp mods can be queried using [`QueryTempModSet`](/unreal/refdocs/#querytempmodset) to get a `ModioModCollectionEntry` with an installation path. + +### Installing Temporary Mods + + + + +![temp_mod_init](img/temp_mod_init.png) + + + + ```cpp +Modio::EnableModManagement([](Modio::ModManagementEvent ModEvent) +{ + if (ModEvent.Status && ModEvent.Event == Modio::ModManagementEvent::EventType::Installed) + { + std::cout << "Mod with ID: " << ModEvent.ID << " is installed" << std::endl; + } + else + { + std::cout << "Mod with ID: " << ModEvent.ID << " failed to install: " << ModEvent.Status.message() << std::endl; + } +}); + +std::vector ModIds = {8, 4, 5}; + +Modio::InitTempModSet(ModIds); + +while(Modio::IsModManagementBusy()) +{ + Modio::RunPendingHandlers(); +} +``` + + + + +This call will start a `TempModSet` and install mods with IDs 8, 4 and 5. + +:::note +If you add a mod to `TempModSet` that is already subscribed, it will not be downloaded; the player will already have that content. If you try to unsubscribe from it while it's in `TempModSet`, the plugin will wait for it to be removed from `TempModSet` before processing the unsubscribe. +::: diff --git a/Doc/doc_root/en-us/getting-started/user-authentication.mdx b/Doc/doc_root/en-us/getting-started/user-authentication.mdx new file mode 100644 index 00000000..e0cb600e --- /dev/null +++ b/Doc/doc_root/en-us/getting-started/user-authentication.mdx @@ -0,0 +1,230 @@ +--- +id: ue-user-authentication +title: User Authentication +slug: /unreal/getting-started/user-authentication +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/getting-started/user-authentication.mdx +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +## Best practices +We recommend creating a new game-instance based subsystem (e.g. `ModioManagerSubsystem`) that depends on `ModioSubsystem`, and is responsible for managing the full initialization and authentication flow for your game. + +### Recommended flow +- Create a subsystem to manage mod.io initialization and authentication. +- Perform [Online Subsystem (OSS) login](#using-the-unreal-online-subsystem) in your subsystem's `Initialize` function to ensure you have a valid platform auth token ready when its time to authenticate to mod.io using [single sign-on (SSO)](#single-sign-on-authentication). + - Log in with the online identity provider. + - On success, get a linked account token for the current user. + - On success, get an authentication token from the linked account or from the online identity. +- [Initialize](initialization) the mod.io plugin with the required environment parameters for the current platform. +- Display the mod.io [Terms of Service](/terms/). Ensure they are accepted by the user. +- Authenticate the user using [SSO](#single-sign-on-authentication). + +:::note +If the Online Subsystem login fails at any point in the above process, fall back to simply initializing the plugin and offer email authentication as an alternative. +::: + +## Terms & user consent + +Users must accept the mod.io Terms of Service before using any mod.io services. The Terms of Service can be fetched from mod.io using [`GetTermsOfUseAsync`](/unreal/refdocs/#gettermsofuseasync). Before attempting authentication, ensure these terms are displayed to and accepted by the user. + +See our full [Terms & User Consent](/terms/) documentation for further details. + +## Authentication methods + +The mod.io Unreal Engine plugin provides two ways for users to create an account to use the service: email authentication, and single sign-on (SSO) through an external authentication partner. + +:::tip +For the best user experience, we recommend using SSO wherever possible. +::: + +### Email authentication + +Users can authenticate to mod.io with just an email address. This involves: + - Requesting a one-time authentication code be sent from mod.io to an email address provided by the user. + - Submitting the received code to mod.io. + +#### Requesting an authentication code + +Request a one-time authentication code by calling [`RequestEmailAuthCodeAsync`](/unreal/refdocs/#requestemailauthcodeasync). Pass in a user-provided email address as the first argument. + + + + ```cpp +void UModioManagerSubsystem::RequestEmailAuthCode(const FString &EmailAddress) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->RequestEmailAuthCodeAsync(FModioEmailAddress(*EmailAddress), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnRequestEmailAuthCodeComplete)); + } +} + +void UModioManagerSubsystem::OnRequestEmailAuthCodeComplete(FModioErrorCode ErrorCode) +{ + UE_LOG(LogModioGame, Log, TEXT("Email auth code request complete with result: %s"), *ErrorCode.GetErrorMessage()); +} +``` + + +![request_email_auth_code](img/request_email_auth_code.png) + + + +When your callback is invoked, inspect the `ModioErrorCode` for a successful result. On success, prompt the user to check their emails and enter the authentication code they have received into your game. + +#### Submitting an authentication code + +To finalize the user's authentication, submit the code they have entered to mod.io by calling [`AuthenticateUserEmailAsync`](/unreal/refdocs/#authenticateuseremailasync). Pass the user's code in as the first argument. + + + + + ```cpp +void UModioManagerSubsystem::AuthenticateUserEmail(const FString& AuthCode) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->AuthenticateUserEmailAsync(FModioEmailAuthCode(*AuthCode), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::OnAuthenticateUserEmailComplete)); + } +} + +void UModioManagerSubsystem::OnAuthenticateUserEmailComplete(FModioErrorCode ErrorCode) +{ + UE_LOG(LogModioGame, Log, TEXT("Email auth code submission complete with result: %s"), *ErrorCode.GetErrorMessage()); +} +``` + + +![authenticate_user_email](img/authenticate_user_email.png) + + + +When your callback is invoked, inspect the `ModioErrorCode` for a successful result. On success, user authentication is complete. + +### Single sign-on authentication + +The mod.io Unreal Engine plugin features single sign-on (SSO) authentication from a number of [external providers](/unreal/refdocs/#EModioAuthenticationProvider). These include: + +- [Xbox Live](/platforms/gdk/#authentication) +- [Steam](/platforms/steam/authentication) +- [GOG Galaxy](/platforms/gog/authentication) +- itch.io +- [Nintendo Switch](/platforms/switch/#authentication) +- Discord +- [PlayStation™Network](/platforms/playstation/#authentication) +- [Epic Online Services](/platforms/epic/authentication) +- Oculus +- OpenID +- [Google](/platforms/google/authentication) + +:::note +OpenID is a premium feature. If you are interested in mod.io premium features, please contact developers@mod.io. +::: + +Each platform has their own requirements and prerequisites for performing SSO. Platform-specific authentication can be found in the respective [platform documentation](/platforms/). SSO is performed by calling [`AuthenticateUserExternalAsync`](/unreal/refdocs/#authenticateuserexternalasync). This function takes a [`ModioAuthenticationParams`](/unreal/refdocs/#modioauthenticationparams) containing provider-specific parameters, and a [`ModioAuthenticationProvider`](/unreal/refdocs/#EModioAuthenticationProvider) indicating the provider you're using. + +[Unreal Engine's Online Subsystem](#using-the-unreal-online-subsystem) provides a convenient way to get a token for `ModioAuthenticationParams.AuthToken`. [`GetDefaultAuthProviderForCurrentPlatform`](/unreal/refdocs/#get-default-auth-provider-for-current-platform) can be used to get the default provider for the current platform. + +:::note +The plugin will automatically URL encode parameters (such as the auth token) when making the request. +::: + + + + + ```cpp +void UModioManagerSubsystem::AuthenticateWithSSO(const FModioAuthenticationParams& AuthParams) +{ + if (UModioSubsystem* Subsystem = GEngine->GetEngineSubsystem()) + { + Subsystem->AuthenticateUserExternalAsync(AuthParams, UModioPlatformHelpersLibrary::GetDefaultAuthProviderForCurrentPlatform(), FOnErrorOnlyDelegateFast::CreateUObject(this, &UModioManagerSubsystem::AuthenticateUserExternalComplete)); + } +} + +void UModioManagerSubsystem::AuthenticateUserExternalComplete(FModioErrorCode ErrorCode) +{ + UE_LOG(LogModioGame, Log, TEXT("SSO complete with result: %s"), *ErrorCode.GetErrorMessage()); +} +``` + + +![authenticate_user_email](img/authenticate_user_external.png) + + + +## Using the Unreal Online Subsystem + +Since Unreal Engine 5.2, most of the authentication methods supported by mod.io are abstracted by Unreal's [Online Subsystem](https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/OnlineSubsystem/IOnlineSubsystem). Below are some code snippets demonstrating the flow to get a linked account token from Unreal's Online Subsystem. + +- Create a subsystem to manage mod.io initialization and authentication that depends on the `ModioSubsystem`. During your subsystem's initialization, perform an Online Subsystem (OSS) login. This guarantees you will have a valid platform auth token ready when needed for mod.io SSO authentication. + + + + ```cpp +const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::GetByPlatform(); +if (OnlineSubsystem != nullptr && OnlineSubsystem->GetIdentityInterface() != nullptr) +{ + // Get the Identity interface from our OnlineSubsystem and perform login + const IOnlineIdentityPtr OnlineIdentity = OnlineSubsystem->GetIdentityInterface(); + OnlineIdentity->AddOnLoginCompleteDelegate_Handle( + 0, FOnLoginCompleteDelegate::CreateLambda( + [this](int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error) { + this->OnSubsystemLoginComplete(LocalUserNum, bWasSuccessful, UserId, Error); + })); + OnlineIdentity->Login(0, FOnlineAccountCredentials()); +} +else +{ + // If we don't have a valid OnlineSubsystem, just initialize the mod.io plugin + InitializeModio(); +} +``` + + + +- After a successful OSS login, request the linked account token. + + + + ```cpp +void UModioManagerSubsystem::OnSubsystemLoginComplete(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error) +{ + if (bWasSuccessful) + { + auto OnlineIdentity = IOnlineSubsystem::GetByPlatform()->GetIdentityInterface(); + OnlineIdentity->GetLinkedAccountAuthToken(0, FString(), IOnlineIdentity::FOnGetLinkedAccountAuthTokenCompleteDelegate::CreateUObject(this, &UModioManagerSubsystem::OnGetLinkedAccountTokenComplete)); + } +} +``` + + + +- On success, the callback received from `GetLinkedAccountAuthToken` will contain a token that you can use to perform SSO. This will contain either a byte array `TokenData` (e.g. for Steam SSO) or `TokenString` for a plaintext string. These need to be handled appropriately. + + + + ```cpp +void UModioManagerSubsystem::OnGetLinkedAccountTokenComplete(int LocalUserNum, bool bWasSuccessful, const FExternalAuthToken& AuthToken) +{ + if (AuthToken.IsValid()) + { + if (AuthToken.HasTokenData()) + { + AuthTokenString = FBase64::Encode(AuthToken.TokenData); + } + else if (AuthToken.HasTokenString()) + { + AuthTokenString = AuthToken.TokenString; + } + } +} +``` + + + +## Token Lifetime & Re-Authentication + +By default, tokens issued via email token exchange have a lifetime of 1 year. You can verify that a user has been successfully authenticated with [`VerifyUserAuthenticationAsync`](/unreal/refdocs/#verifyuserauthenticationasync). + +If a user is not authenticated for any reason (e.g. their token has been invalidated by changing their password, or their profile data has been removed from their device) then you should prompt them to re-authenticate. diff --git a/Doc/doc_root/en-us/index.mdx b/Doc/doc_root/en-us/index.mdx new file mode 100644 index 00000000..27c5db62 --- /dev/null +++ b/Doc/doc_root/en-us/index.mdx @@ -0,0 +1,43 @@ +--- +id: ue-index +title: Overview +slug: /unreal/ +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/index.mdx +--- + +The mod.io Unreal Engine plugin enables game developers to easily integrate mods into their Unreal Engine 5 games. + +The plugin provides a C++ and Blueprint interface around the [mod.io SDK](/cppsdk/) to connect to the [mod.io REST API](https://docs.mod.io/restapiref/). Also included is a set of UI components to easily create a custom user interface that matches your game's style, plus a comprehensive template UI to get you started. + +You can download the [mod.io Unreal Engine plugin from GitHub](https://github.com/modio/modio-ue). Once you have, follow the [installation guide](installation-and-setup/) for installing and configuring the plugin. A series of [quick-start guides](getting-started/) are also available to familiarize yourself with the plugin's core features. + +## Engine & platform compatability + +The mod.io plugin is generally maintained to support the 3 most recent versions of Unreal Engine. If you are using an older version of the engine, you can access the last supported release of the engine from our [releases page](https://github.com/modio/modio-ue/releases) on GitHub. + +### Engine compatability + +|Engine Version | Last Release | +|---|---| +|UE4.26 | 2023.11 | +|UE4.27 | 2023.11 | +|UE5.0 | 2023.11 | +|UE5.1 | 2024.6 | +|UE5.2 | Current | +|UE5.3 | Current | +|UE5.4 | Current | + +### Platform compatability + +The mod.io Unreal Engine plugin supports Windows, Linux, Android and macOS as part of the public release. For access to Windows (GDK), Xbox, PlayStation®4, PlayStation®5 or Switch, follow the [instructions here](/platforms/console-sdks/). + +## Features + +* C++ and Blueprint support +* UGC browsing and filtering +* Automatic downloads and updates +* Customizable component-based user interface +* Permissive MIT/BSL-license +* Async delegate-based interface +* Non-blocking IO +* SSO authentication for Steam, Epic Games Store, console platform and custom implementations \ No newline at end of file diff --git a/Doc/doc_root/en-us/installation-and-setup.mdx b/Doc/doc_root/en-us/installation-and-setup.mdx new file mode 100644 index 00000000..361d74ed --- /dev/null +++ b/Doc/doc_root/en-us/installation-and-setup.mdx @@ -0,0 +1,78 @@ +--- +id: ue-installation-and-setup +title: Installation & Setup +slug: /unreal/installation-and-setup/ +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/installation-and-setup.mdx +--- + +## Adding plugin files to your project + +Download the Unreal Engine plugin from the [mod.io GitHub repository](https://github.com/modio/modio-ue) using one of the following methods: + +### As a git submodule + +- In the directory with your `.uproject` file, add and download the mod.io plugin as a git submodule with the command: + + `git submodule add https://github.com/modio/modio-ue.git Plugins/Modio` + +- Next, initialize our submodules and dependencies: + + `git submodule update --init --recursive` + +### In a non-git project, or without submodules + +- Grab the latest release zip from the [releases section](https://github.com/modio/modio-ue/releases) on GitHub and extract the contents to your project’s `Plugins/Modio` directory + +![get_latest_release](img/get_latest_release.png) ![get_latest_release2](img/get_latest_release2.png) + +:::note +GitHub's automatically generated zips will not work! They do not contain our submodule dependencies. Ensure you download the zip file from the releases page as highlighted above. +::: + +## Enabling the plugin + +Start the editor and enable the plugin in the Unreal Engine plugin settings. + +![plugin_window](img/plugin_window.png) + + + +## Plugin configuration + +The plugin requires some initial configuration to behave correctly. You can access these settings in the Project Settings window: + +![plugin_settings](img/plugin_settings.png) + +The settings have the following parameters: + +| Property | Description | +| --- | --- | +| Game Id | Your mod.io-provided Game Id for the target environment | +| API Key | Your mod.io-provided API key for the target environment | +| Environment | Your target environment, `Live` or `Test` | +| Log Level | The default logging level to use. Messages with a lower log level will be silently discarded. | +| Portal | The default portal to use. This usually corresponds to the store your game will be distributed through. | +| Use Background Thread | Enables or disables the use of a [background thread](#using-a-background-thread) for the plugin's work. | + +:::note +The Test environment is available for usage in limited circumstances only. **[All games should be set up on the Live environment](/unreal/installation-and-setup/#using-the-live-environment)**. Set your game to **hidden** to restrict access during the testing phase. If you require access to Test, please contact us. +::: + +## Using a background thread + +[`RunPendingHandlers`](/unreal/refdocs/#run-pending-handlers) is responsible for running any pending plugin work, including invoking callbacks passed to asynchronous operations. With `Use Background Thread` set to `true`, the mod.io plugin will automatically spin up a background thread and continually call `RunPendingHandlers` for you. This decouples the frequency of the plugin’s work from your game's main thread, and improves performance of the plugin overall. + +Calling methods from the [`ModioSubsystem`](/unreal/refdocs/#modiosubsystem) will marshall all callbacks back to the game thread. All other plugin call guarantees remain the same. + +## Using the `Live` environment + +All games should be set up on the `Live` environment for full access to the mod.io REST API's capabilities. + +If your game or it's modding capabilities are not yet publicly available, set your game to **hidden** on the `Live` environment. This allows you to restrict access to specific accounts and perform QA against the production environment without exposing your title to the public. + +Once you are ready, change the state from **hidden** to **public** for a full release of your game’s modding capabilities. + +## Next Steps + +* Our [Getting Started Guide](/unreal/getting-started/) page contains a series of quick-start guides with code samples demonstrating the plugin's core functionality. +* A sample project demonstrating basic mod.io functionality is available [here](https://go.mod.io/ue5-sample). diff --git a/Doc/doc_root/en-us/marketplace.mdx b/Doc/doc_root/en-us/marketplace.mdx new file mode 100644 index 00000000..1ef7977d --- /dev/null +++ b/Doc/doc_root/en-us/marketplace.mdx @@ -0,0 +1,25 @@ +--- +id: ue-marketplace +title: Marketplace +slug: /unreal/marketplace/ +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/marketplace.mdx +--- + +## Setup + +The mod.io Unreal Engine Plugin supports in-game integration of the mod.io Marketplace - exposing the data and functions required to build a UGC store in-game. + +The mod.io monetization features are need to be enabled through the web UI and, if selling the virtual currency through a platform store, will need a service to consume the virtual currency entitlements and apply them to player's mod.io account. + +## Implementation +Marketplace functionality is accessible via the mod.io Subsystem along with all other functionality and as Blueprint nodes. Functions specific to monetization include: + +- `GetUserWalletBalanceAsync` +- `FetchUserPurchasesAsync` +- `PurchaseModAsync` + +## References + +* [Monetization Introduction](/monetization/) +* [SDK Monetization Guide](/cppsdk/getting-started/#monetization) +* [Purchase Server Implementation](/web-services/marketplace/overview/) diff --git a/Doc/doc_root/en-us/mod-creation-tool-documentation.mdx b/Doc/doc_root/en-us/mod-creation-tool-documentation.mdx new file mode 100644 index 00000000..6b42e57e --- /dev/null +++ b/Doc/doc_root/en-us/mod-creation-tool-documentation.mdx @@ -0,0 +1,174 @@ +--- +id: ue-mod-creation-tool +title: Mod Creation Tool +slug: /unreal/mod-creation-tool/ +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/mod-creation-tool-documentation.mdx +--- + +## Mod Creation & Upload Tool + +The mod.io Unreal Engine's plugin includes an editor module which provides an embedded mod.io - Content Creation and Upload Tool. + +### Editor-specific plugin modules + +| Module Name | Description | Module Type | +| --- | --- | --- | +| ModioEditor | Editor details customization and asset factories for UE content creation and upload tool classes | Editor | + +### Opening the tool +Click the mod.io icon in Unreal Engine to show a drop down menu, click the **Create & Upload** menu. Once opened, it may require mod.io authentication as below. + +![how_to_open_tool](img/Tool/how_to_open_tool.jpg) + +### Authenticating + +Authentication may be required either being a first time user of the module or not logged in previously. If you are already logged in, you will automatically be redirected to creating or editing mods. + +The user will be authenticated if not already logged in to mod.io account. + +**Email:** +Enter your email in the text box shown below and click Login, a verification code will be sent to the submitted email address. + +![auth_enter_email](img/Tool/auth_enter_email.jpg) + +#### Verification Code + +**Verification Code:** Enter the code received in your email and click Authenticate. + +![auth_enter_code](img/Tool/auth_enter_code.jpg) + +If everything goes correctly, you will be authenticated successfully. + +### Create or Edit Mods +After successfull authentication, you can either **Create Mod** or **Edit Mods**. + +![create_or_upload_mod](img/Tool/create_or_upload_mod.jpg) + +#### Create Mod + +**Create Mod** lets you create a new mod. + +![create_mod](img/Tool/create_mod.jpg) + +#### Edit Mods + +**Edit Mods** lets you edit existing mods and change any specific values or mod files on them. + +![edit_mods](img/Tool/edit_mods.jpg) + +### Create a Mod +Creating a mod is made easy directly from within Unreal Engine described in the +process below. + +#### Create Mod + +Click **Create Mod** and fill the following required fields: + +**Create Mod Properties** + +| Fields | Description | +| --- | --- | +| Path to Logo File | Browse to select your **.png** file for logo | +| Name | Name of the mod | +| Summary | A brief summary of the mod | + +![create_mod_properties](img/Tool/create_mod_properties.jpg) + +Once filled all the required fields, click **Submit** to create the mod. + +![create_mod_properties_submit](img/Tool/create_mod_properties_submit.jpg) + +**TIP**: You may get an error dialog if the game doesn't support your platform or the game is locked. + +![error_platform_not_supported](img/Tool/error_platform_not_supported.jpg) +![error_game_locked](img/Tool/error_game_locked.jpg) + +Once everything goes successful you will be asked if you also want to upload a mod file right away. + +![mod_created_modfile_prompt](img/Tool/mod_created_modfile_prompt.jpg) + +If **Yes** is selected you will be redirected to **STEP 6**. + +### Edit existing mods +Editing existing mods is made easy in the same way as creating a mod directly from within Unreal Engine described in the process below. + +#### Edit Mods + +By clicking **Edit Mods**, a list of mods will be shown to edit. You can select a mod by clicking on it. + +**Browse Mods** + +| Name | Description | +| --- | --- | +| Your mod name | Your mod description | + +![browse_mods](img/Tool/browse_mods.jpg) + +Once a mod is selected, click **Edit Mod** to edit the mod. + +![browse_mods_edit_mods](img/Tool/browse_mods_edit_mods.jpg) + +**Edit Mod Properties** + +| Field | Description | +| --- | --- | +| Name | Your mod name | +| Summary | Your mod summary | +| Homepage URL | Your mod homepage url | + +![edit_mod_properties](img/Tool/edit_mod_properties.jpg) + +If you want to change the mod properties, make desirable changes to above fields and click **Submit**. + +![edit_mod_properties_submit](img/Tool/edit_mod_properties_submit.jpg) + +Then click **Edit Files** to see list of existing mod files. + +![edit_mod_properties_edit_files](img/Tool/edit_mod_properties_edit_files.jpg) + +**Modfile** + +| Name | Platform | Version | Status | +| --- | --- | --- | --- | +| Your mod file name | Your mod platform | Your mod file version | Your mod file status | + +![browse_modfile](img/Tool/browse_modfile.jpg) + +### Uploading a new modfile +To upload a mod file, a workspace directory path is mandatory which is described in the process below. + +Click **New Modfile** + +![browse_modfile_new_modfile](img/Tool/browse_modfile_new_modfile.jpg) + +You may need to select **Create mod for PC** + +![create_mod_for_pc](img/Tool/create_mod_for_pc.jpg) + +Fill the required fields: + +TIP: You may get an error dialog if the game doesn't support your platform or the game is locked. + +**Upload Mod File** + +| Field | Description | +| --- | --- | +| Version | Your mod file version | +| Changelog | Your mod file platform | +| Set as Active Release | Whether to set as Active Release | +| Path to Mod Root Directory | Path to the workspace directory | + +![upload_modfile](img/Tool/upload_modfile.jpg) + +Once all fields are filled out, click **Submit** + +![upload_modfile_submit](img/Tool/upload_modfile_submit.jpg) + +Once submitted, the progress bar will be displayed about the workspace directory being zipped and uploaded with all other information provided for the new mod file. + +![upload_modfile_submit_status](img/Tool/upload_modfile_submit_status.jpg) + +### Mod file upload +**TIP**: You may get an error dialog if the game doesn't support your platform or the game is locked or any error that occurs due to internet or any other circumstances. + +![modfile_successfully_uploaded](img/Tool/modfile_successfully_uploaded.jpg) \ No newline at end of file diff --git a/Doc/doc_root/en-us/profiling.mdx b/Doc/doc_root/en-us/profiling.mdx new file mode 100644 index 00000000..fc334b42 --- /dev/null +++ b/Doc/doc_root/en-us/profiling.mdx @@ -0,0 +1,14 @@ +--- +id: ue-profiling +title: Profiling +slug: /unreal/profiling/ +custom_edit_url: https://github.com/modio/modio-ue4-internal/blob/develop/Plugins/Modio/Doc/doc_root/en-us/profiling.mdx +--- + +The mod.io UE plugin includes some basic profiling and metrics that can be viewed and exposed via Unreal’s `stat` commands and via Unreal Insights. Profiling via the `MODIO_ENABLE_PROFILING` and `MODIO_UNREAL_PROFILING_SUPPORT` macros are enabled by default in the mod.io plugin for non-shipping builds. + +## Showing Captured Data + +The plugin includes two stat groups that can be shown: `Modio` (accessed via `stat modio`) and ModioScoped (async operations profiled for access via Unreal Insights). +* `Modio` includes some basic counters, such as the length of various background queues that process API requests and downloads. +* `ModioScoped` captures performance insights for a majority of the async operations that the plugin performs. This data is not suitable for showing in realtime via a `stat` command, however it is captured when creating stat profiles for use in Unreal Insights. \ No newline at end of file diff --git a/Doc/img/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions.png b/Doc/img/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions.png index 48104bbc..a6a3f56a 100644 Binary files a/Doc/img/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions.png and b/Doc/img/nd_img_ModioCommonTypesLibrary_MakeInitializeOptions.png differ diff --git a/Doc/img/nd_img_ModioCommonTypesLibrary_NotEqualTo.png b/Doc/img/nd_img_ModioCommonTypesLibrary_NotEqualTo.png index 4d50cf21..634a30da 100644 Binary files a/Doc/img/nd_img_ModioCommonTypesLibrary_NotEqualTo.png and b/Doc/img/nd_img_ModioCommonTypesLibrary_NotEqualTo.png differ diff --git a/Doc/img/nd_img_ModioCommonTypesLibrary_SetBackgroundThread.png b/Doc/img/nd_img_ModioCommonTypesLibrary_SetBackgroundThread.png new file mode 100644 index 00000000..a32f2528 Binary files /dev/null and b/Doc/img/nd_img_ModioCommonTypesLibrary_SetBackgroundThread.png differ diff --git a/Doc/img/nd_img_ModioCommonTypesLibrary_SetPortal.png b/Doc/img/nd_img_ModioCommonTypesLibrary_SetPortal.png index 92f2537c..8462dd45 100644 Binary files a/Doc/img/nd_img_ModioCommonTypesLibrary_SetPortal.png and b/Doc/img/nd_img_ModioCommonTypesLibrary_SetPortal.png differ diff --git a/Doc/img/nd_img_ModioCommonTypesLibrary_SetSessionId.png b/Doc/img/nd_img_ModioCommonTypesLibrary_SetSessionId.png index 5cd2f8db..159bf985 100644 Binary files a/Doc/img/nd_img_ModioCommonTypesLibrary_SetSessionId.png and b/Doc/img/nd_img_ModioCommonTypesLibrary_SetSessionId.png differ diff --git a/Doc/img/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier.png b/Doc/img/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier.png index c545e096..4010a428 100644 Binary files a/Doc/img/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier.png and b/Doc/img/nd_img_ModioCommonTypesLibrary_SetSessionIdentifier.png differ diff --git a/Doc/img/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob.png b/Doc/img/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob.png index 2481e581..c41da116 100644 Binary files a/Doc/img/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob.png and b/Doc/img/nd_img_ModioCreateModLibrary_SetModFileMetadataBlob.png differ diff --git a/Doc/img/nd_img_ModioCreateModLibrary_SetVersionString.png b/Doc/img/nd_img_ModioCreateModLibrary_SetVersionString.png index 30c26472..01f959c8 100644 Binary files a/Doc/img/nd_img_ModioCreateModLibrary_SetVersionString.png and b/Doc/img/nd_img_ModioCreateModLibrary_SetVersionString.png differ diff --git a/Doc/img/nd_img_ModioErrorCodeLibrary_GetMessage.png b/Doc/img/nd_img_ModioErrorCodeLibrary_GetMessage.png index 06387798..0c172019 100644 Binary files a/Doc/img/nd_img_ModioErrorCodeLibrary_GetMessage.png and b/Doc/img/nd_img_ModioErrorCodeLibrary_GetMessage.png differ diff --git a/Doc/img/nd_img_ModioErrorCodeLibrary_GetValue.png b/Doc/img/nd_img_ModioErrorCodeLibrary_GetValue.png index 3e51285c..ade4391b 100644 Binary files a/Doc/img/nd_img_ModioErrorCodeLibrary_GetValue.png and b/Doc/img/nd_img_ModioErrorCodeLibrary_GetValue.png differ diff --git a/Doc/img/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync.png b/Doc/img/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync.png index e32ec8c9..75b0e4e7 100644 Binary files a/Doc/img/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync.png and b/Doc/img/nd_img_ModioExampleLibrary_ListUserSubscriptionAsync.png differ diff --git a/Doc/img/nd_img_ModioImageLibrary_GetState.png b/Doc/img/nd_img_ModioImageLibrary_GetState.png index 99e0cd72..3fbff1bc 100644 Binary files a/Doc/img/nd_img_ModioImageLibrary_GetState.png and b/Doc/img/nd_img_ModioImageLibrary_GetState.png differ diff --git a/Doc/img/nd_img_ModioImageLibrary_GetTexture.png b/Doc/img/nd_img_ModioImageLibrary_GetTexture.png index 180b2495..da6a565c 100644 Binary files a/Doc/img/nd_img_ModioImageLibrary_GetTexture.png and b/Doc/img/nd_img_ModioImageLibrary_GetTexture.png differ diff --git a/Doc/img/nd_img_ModioModCollectionLibrary_GetID.png b/Doc/img/nd_img_ModioModCollectionLibrary_GetID.png index 2e32ebd4..6bfe6c96 100644 Binary files a/Doc/img/nd_img_ModioModCollectionLibrary_GetID.png and b/Doc/img/nd_img_ModioModCollectionLibrary_GetID.png differ diff --git a/Doc/img/nd_img_ModioModProgressInfoLibrary_GetCurrentState.png b/Doc/img/nd_img_ModioModProgressInfoLibrary_GetCurrentState.png index 4700131c..1ec27ddd 100644 Binary files a/Doc/img/nd_img_ModioModProgressInfoLibrary_GetCurrentState.png and b/Doc/img/nd_img_ModioModProgressInfoLibrary_GetCurrentState.png differ diff --git a/Doc/img/nd_img_ModioModProgressInfoLibrary_GetTotalProgress.png b/Doc/img/nd_img_ModioModProgressInfoLibrary_GetTotalProgress.png index 6b588d10..3ee23c47 100644 Binary files a/Doc/img/nd_img_ModioModProgressInfoLibrary_GetTotalProgress.png and b/Doc/img/nd_img_ModioModProgressInfoLibrary_GetTotalProgress.png differ diff --git a/Doc/img/nd_img_ModioPresetFilterParamsLibrary_ToFilterParams.png b/Doc/img/nd_img_ModioPresetFilterParamsLibrary_ToFilterParams.png index f1030075..e98377e1 100644 Binary files a/Doc/img/nd_img_ModioPresetFilterParamsLibrary_ToFilterParams.png and b/Doc/img/nd_img_ModioPresetFilterParamsLibrary_ToFilterParams.png differ diff --git a/Doc/img/nd_img_ModioSDKLibrary_GetMonetizationPurchaseCategory.png b/Doc/img/nd_img_ModioSDKLibrary_GetMonetizationPurchaseCategory.png new file mode 100644 index 00000000..888e1e4c Binary files /dev/null and b/Doc/img/nd_img_ModioSDKLibrary_GetMonetizationPurchaseCategory.png differ diff --git a/Doc/img/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory.png b/Doc/img/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory.png index 91de5136..d1dcc3ea 100644 Binary files a/Doc/img/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory.png and b/Doc/img/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFileForModFromMemory.png differ diff --git a/Doc/img/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync.png b/Doc/img/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync.png index 7a0a604b..4747bac8 100644 Binary files a/Doc/img/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync.png and b/Doc/img/nd_img_ModioSubmissionExtensionLibrary_K2_SubmitNewModFromMemoryAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_CloseTempModSet.png b/Doc/img/nd_img_ModioSubsystem_K2_CloseTempModSet.png index 489c0c56..db66c41a 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_CloseTempModSet.png and b/Doc/img/nd_img_ModioSubsystem_K2_CloseTempModSet.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync.png index 6cc30a31..df1e4049 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_FetchExternalUpdatesAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync.png index 9519f93a..8e219a39 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_FetchUserPurchasesAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync.png index 8175f93c..b5a91d2d 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_GetModMediaGalleryImageAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync.png index 678e320f..a0ab878c 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_GetUserWalletBalanceAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_InitTempModSet.png b/Doc/img/nd_img_ModioSubsystem_K2_InitTempModSet.png index a9e4b009..70d24793 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_InitTempModSet.png and b/Doc/img/nd_img_ModioSubsystem_K2_InitTempModSet.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_ListAllModsAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_ListAllModsAsync.png index a6b764ca..7efcf565 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_ListAllModsAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_ListAllModsAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync.png index 37f1cc60..918f2734 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_MetricsSessionSendHeartbeatAtIntervalAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_PurchaseModAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_PurchaseModAsync.png index 7c9b9ce3..e9e01a82 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_PurchaseModAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_PurchaseModAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_QueryTempModSet.png b/Doc/img/nd_img_ModioSubsystem_K2_QueryTempModSet.png index df294550..c53cb9a3 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_QueryTempModSet.png and b/Doc/img/nd_img_ModioSubsystem_K2_QueryTempModSet.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_RemoveFromTempModSet.png b/Doc/img/nd_img_ModioSubsystem_K2_RemoveFromTempModSet.png index 688c8dd8..a3c289e6 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_RemoveFromTempModSet.png and b/Doc/img/nd_img_ModioSubsystem_K2_RemoveFromTempModSet.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_ReportContentAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_ReportContentAsync.png index 5696e671..df199f0e 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_ReportContentAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_ReportContentAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_SubmitNewModAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_SubmitNewModAsync.png index 34251e69..62e6f599 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_SubmitNewModAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_SubmitNewModAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_SubscribeToModAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_SubscribeToModAsync.png index 587b01f6..389e6852 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_SubscribeToModAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_SubscribeToModAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_UnmuteUserAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_UnmuteUserAsync.png index 1175a92d..d4c73efe 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_UnmuteUserAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_UnmuteUserAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync.png b/Doc/img/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync.png index 2c07b9ba..59f5c69b 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync.png and b/Doc/img/nd_img_ModioSubsystem_K2_UnsubscribeFromModAsync.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_PrioritizeTransferForMod.png b/Doc/img/nd_img_ModioSubsystem_PrioritizeTransferForMod.png index 71ac0375..850ec592 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_PrioritizeTransferForMod.png and b/Doc/img/nd_img_ModioSubsystem_PrioritizeTransferForMod.png differ diff --git a/Doc/img/nd_img_ModioSubsystem_QueryUserInstallations.png b/Doc/img/nd_img_ModioSubsystem_QueryUserInstallations.png index f2b7df79..c83e96c2 100644 Binary files a/Doc/img/nd_img_ModioSubsystem_QueryUserInstallations.png and b/Doc/img/nd_img_ModioSubsystem_QueryUserInstallations.png differ diff --git a/Doc/img/nd_img_ModioTokenPackLibrary_GetDescription.png b/Doc/img/nd_img_ModioTokenPackLibrary_GetDescription.png new file mode 100644 index 00000000..829e21b8 Binary files /dev/null and b/Doc/img/nd_img_ModioTokenPackLibrary_GetDescription.png differ diff --git a/Doc/img/nd_img_ModioTokenPackLibrary_GetDisplayPrice.png b/Doc/img/nd_img_ModioTokenPackLibrary_GetDisplayPrice.png new file mode 100644 index 00000000..aaf91c54 Binary files /dev/null and b/Doc/img/nd_img_ModioTokenPackLibrary_GetDisplayPrice.png differ diff --git a/Doc/img/nd_img_ModioTokenPackLibrary_GetFields.png b/Doc/img/nd_img_ModioTokenPackLibrary_GetFields.png new file mode 100644 index 00000000..26cb91dd Binary files /dev/null and b/Doc/img/nd_img_ModioTokenPackLibrary_GetFields.png differ diff --git a/Doc/img/nd_img_ModioTokenPackLibrary_GetId.png b/Doc/img/nd_img_ModioTokenPackLibrary_GetId.png new file mode 100644 index 00000000..b7b6e525 Binary files /dev/null and b/Doc/img/nd_img_ModioTokenPackLibrary_GetId.png differ diff --git a/Doc/img/nd_img_ModioTokenPackLibrary_GetLongDescription.png b/Doc/img/nd_img_ModioTokenPackLibrary_GetLongDescription.png new file mode 100644 index 00000000..dc20e222 Binary files /dev/null and b/Doc/img/nd_img_ModioTokenPackLibrary_GetLongDescription.png differ diff --git a/Doc/img/nd_img_ModioTokenPackLibrary_GetModioId.png b/Doc/img/nd_img_ModioTokenPackLibrary_GetModioId.png new file mode 100644 index 00000000..f498d840 Binary files /dev/null and b/Doc/img/nd_img_ModioTokenPackLibrary_GetModioId.png differ diff --git a/Doc/img/nd_img_ModioTokenPackLibrary_GetNumericPrice.png b/Doc/img/nd_img_ModioTokenPackLibrary_GetNumericPrice.png new file mode 100644 index 00000000..aeaed84b Binary files /dev/null and b/Doc/img/nd_img_ModioTokenPackLibrary_GetNumericPrice.png differ diff --git a/Doc/img/nd_img_ModioTokenPackLibrary_GetRegularPrice.png b/Doc/img/nd_img_ModioTokenPackLibrary_GetRegularPrice.png new file mode 100644 index 00000000..b409259b Binary files /dev/null and b/Doc/img/nd_img_ModioTokenPackLibrary_GetRegularPrice.png differ diff --git a/Doc/img/nd_img_ModioTokenPackLibrary_GetTitle.png b/Doc/img/nd_img_ModioTokenPackLibrary_GetTitle.png new file mode 100644 index 00000000..3dd1efe4 Binary files /dev/null and b/Doc/img/nd_img_ModioTokenPackLibrary_GetTitle.png differ diff --git a/Doc/img/nd_img_ModioTokenPackLibrary_IsPurchasable.png b/Doc/img/nd_img_ModioTokenPackLibrary_IsPurchasable.png new file mode 100644 index 00000000..e1eb4cce Binary files /dev/null and b/Doc/img/nd_img_ModioTokenPackLibrary_IsPurchasable.png differ diff --git a/Doc/img/nd_img_ModioUnsigned64Library_Divide.png b/Doc/img/nd_img_ModioUnsigned64Library_Divide.png index 498e7b3c..06a9f7df 100644 Binary files a/Doc/img/nd_img_ModioUnsigned64Library_Divide.png and b/Doc/img/nd_img_ModioUnsigned64Library_Divide.png differ diff --git a/Doc/img/nd_img_ModioUnsigned64Library_DivideToFloat.png b/Doc/img/nd_img_ModioUnsigned64Library_DivideToFloat.png index 2a4e511d..3282e9e7 100644 Binary files a/Doc/img/nd_img_ModioUnsigned64Library_DivideToFloat.png and b/Doc/img/nd_img_ModioUnsigned64Library_DivideToFloat.png differ diff --git a/Doc/img/nd_img_ModioUnsigned64Library_GreaterThan.png b/Doc/img/nd_img_ModioUnsigned64Library_GreaterThan.png index fa79cde6..aa57f583 100644 Binary files a/Doc/img/nd_img_ModioUnsigned64Library_GreaterThan.png and b/Doc/img/nd_img_ModioUnsigned64Library_GreaterThan.png differ diff --git a/Doc/img/nd_img_ModioUnsigned64Library_LessThan.png b/Doc/img/nd_img_ModioUnsigned64Library_LessThan.png index 668f76f0..c9883f55 100644 Binary files a/Doc/img/nd_img_ModioUnsigned64Library_LessThan.png and b/Doc/img/nd_img_ModioUnsigned64Library_LessThan.png differ diff --git a/Doc/img/nd_img_ModioUnsigned64Library_MakeFromComponents.png b/Doc/img/nd_img_ModioUnsigned64Library_MakeFromComponents.png index 4ed4c572..fef40741 100644 Binary files a/Doc/img/nd_img_ModioUnsigned64Library_MakeFromComponents.png and b/Doc/img/nd_img_ModioUnsigned64Library_MakeFromComponents.png differ diff --git a/Doc/img/nd_img_ModioUnsigned64Library_NotEqualTo.png b/Doc/img/nd_img_ModioUnsigned64Library_NotEqualTo.png index 4d50cf21..634a30da 100644 Binary files a/Doc/img/nd_img_ModioUnsigned64Library_NotEqualTo.png and b/Doc/img/nd_img_ModioUnsigned64Library_NotEqualTo.png differ diff --git a/Doc/img/nd_img_ModioUnsigned64Library_Percentage_Unsigned64.png b/Doc/img/nd_img_ModioUnsigned64Library_Percentage_Unsigned64.png index 0a971ab9..b9bec54b 100644 Binary files a/Doc/img/nd_img_ModioUnsigned64Library_Percentage_Unsigned64.png and b/Doc/img/nd_img_ModioUnsigned64Library_Percentage_Unsigned64.png differ diff --git a/Doc/img/nd_img_ModioUnsigned64Library_Subtract.png b/Doc/img/nd_img_ModioUnsigned64Library_Subtract.png index e66f5f61..cb6f0684 100644 Binary files a/Doc/img/nd_img_ModioUnsigned64Library_Subtract.png and b/Doc/img/nd_img_ModioUnsigned64Library_Subtract.png differ diff --git a/Doc/index.html b/Doc/index.html index 7e70d7f3..369267f9 100644 --- a/Doc/index.html +++ b/Doc/index.html @@ -4,7 +4,7 @@ - + diff --git a/Modio.uplugin b/Modio.uplugin index 5bf3a6ea..1d0c5674 100644 --- a/Modio.uplugin +++ b/Modio.uplugin @@ -65,6 +65,10 @@ { "Name": "PluginBrowser", "Enabled": true + }, + { + "Name": "OnlineSubsystem", + "Enabled": true } ] } \ No newline at end of file diff --git a/Source/Modio/Modio.Build.cs b/Source/Modio/Modio.Build.cs index 4b9d2132..e1237c20 100644 --- a/Source/Modio/Modio.Build.cs +++ b/Source/Modio/Modio.Build.cs @@ -415,7 +415,8 @@ private void AddCommonHeaderPaths(string GeneratedHeaderPath) Path.Combine(ModuleDirectory, "../ThirdParty/concurrentqueue"), Path.Combine(GeneratedHeaderPath, "Private"), - Path.Combine(GeneratedHeaderPath, "Public") + Path.Combine(GeneratedHeaderPath, "Public"), + GeneratedHeaderPath }); @@ -428,7 +429,7 @@ private void AddCommonDependencyModules() }); PrivateDependencyModuleNames.AddRange(new string[] { - "Projects", "CoreUObject", "RHI", "RenderCore", "HTTP" + "Projects", "CoreUObject", "RHI", "RenderCore", "HTTP", "OnlineSubsystem" }); if (Target.bBuildEditor) @@ -513,14 +514,15 @@ private void AddCommonDefinitions() string VersionString = File.ReadAllText(VersionFilePath); VersionString = VersionString.Trim(); PrivateDefinitions.Add(string.Format("MODIO_COMMIT_HASH=\"UNREAL-{0}\"", VersionString)); + // Add dependency on version file so if it is changed we trigger a rebuild + ExternalDependencies.Add(VersionFilePath); } else { PrivateDefinitions.Add("MODIO_COMMIT_HASH=\"UNREAL-DEV\""); } - // Add dependency on version file so if it is changed we trigger a rebuild - ExternalDependencies.Add(VersionFilePath); + } private bool DoesPlatformSupportProfiling(UnrealTargetPlatform Platform) diff --git a/Source/Modio/Private/Libraries/ModioCommonTypesLibrary.cpp b/Source/Modio/Private/Libraries/ModioCommonTypesLibrary.cpp index 976ceb18..490f2a9e 100644 --- a/Source/Modio/Private/Libraries/ModioCommonTypesLibrary.cpp +++ b/Source/Modio/Private/Libraries/ModioCommonTypesLibrary.cpp @@ -74,13 +74,14 @@ FString UModioCommonTypesLibrary::Conv_UserIDToString(FModioUserID UserID) FModioInitializeOptions UModioCommonTypesLibrary::MakeInitializeOptions(int64 GameId, const FString& APIKey, EModioEnvironment GameEnvironment, - EModioPortal PortalInUse) + EModioPortal PortalInUse, bool bUseBackgroundThread) { FModioInitializeOptions Options; Options.GameId = FModioGameID(GameId); Options.ApiKey = FModioApiKey(APIKey); Options.GameEnvironment = GameEnvironment; Options.PortalInUse = PortalInUse; + Options.bUseBackgroundThread = bUseBackgroundThread; return Options; } @@ -115,8 +116,15 @@ FModioInitializeOptions UModioCommonTypesLibrary::SetPortal(const FModioInitiali return DuplicateOptions; } +FModioInitializeOptions UModioCommonTypesLibrary::SetBackgroundThread(const FModioInitializeOptions& Options, bool bUseBackgroundThread) +{ + FModioInitializeOptions DuplicateOptions {Options}; + DuplicateOptions.bUseBackgroundThread = bUseBackgroundThread; + return DuplicateOptions; +} + FModioInitializeOptions UModioCommonTypesLibrary::SetSessionIdentifier(const FModioInitializeOptions& Options, - const FString& SessionIdentifier) + const FString& SessionIdentifier) { FModioInitializeOptions DuplicateOptions {Options}; DuplicateOptions.LocalSessionIdentifier = SessionIdentifier; diff --git a/Source/Modio/Private/Libraries/ModioSDKLibrary.cpp b/Source/Modio/Private/Libraries/ModioSDKLibrary.cpp index 358742e2..07a6bfeb 100644 --- a/Source/Modio/Private/Libraries/ModioSDKLibrary.cpp +++ b/Source/Modio/Private/Libraries/ModioSDKLibrary.cpp @@ -15,6 +15,7 @@ #include "ModioSettings.h" #include "Internal/ModioConvert.h" #include "Misc/EngineVersionComparison.h" +#include "Libraries/ModioPlatformHelpersLibrary.h" FModioGameID UModioSDKLibrary::GetProjectGameId() @@ -297,3 +298,16 @@ EModioLanguage UModioSDKLibrary::GetLanguageCodeFromString(FString LanguageCode) } return EModioLanguage::English; } + +FString UModioSDKLibrary::GetMonetizationPurchaseCategory(EModioPortal Portal) +{ + const UModioSettings* Settings = GetDefault(); + + if (!Settings->PlatformIdentifiers.Contains(Portal)) + { + UE_LOG(LogTemp, Warning, TEXT("Could not find current platform in Platform identifiers. Platform: %d"), (int)Portal); + return FString(); + } + + return Settings->PlatformIdentifiers[Portal]; +} diff --git a/Source/Modio/Private/ModioSubsystem.cpp b/Source/Modio/Private/ModioSubsystem.cpp index 1bbb9d08..31e3e3fa 100644 --- a/Source/Modio/Private/ModioSubsystem.cpp +++ b/Source/Modio/Private/ModioSubsystem.cpp @@ -172,6 +172,8 @@ void UModioSubsystem::InitializeAsync(const FModioInitializeOptions& Options, FO BackgroundThread = MakeUnique(this); } + CachedInitializeOptions = Options; + #if WITH_EDITOR if (const UModioSettings* Settings = GetMutableDefault()) { diff --git a/Source/Modio/Private/Types/ModioCommonTypes.cpp b/Source/Modio/Private/Types/ModioCommonTypes.cpp index 5171aa2c..eaf52ed8 100644 --- a/Source/Modio/Private/Types/ModioCommonTypes.cpp +++ b/Source/Modio/Private/Types/ModioCommonTypes.cpp @@ -70,4 +70,11 @@ FModioGuid FModioGuid::InvalidGuid() FModioGuid FModioGuid::GenerateGuid() { return FModioGuid(ToUnreal(*Modio::Guid::GenerateGuid())); -} \ No newline at end of file +} + +FModioTokenPackID::FModioTokenPackID() {} + +uint32 GetTypeHash(FModioTokenPackID ModioTokenPackId) +{ + return FCrc::MemCrc32(&ModioTokenPackId, sizeof(FModioTokenPackID)); +} diff --git a/Source/Modio/Private/Types/ModioTokenPackListUImpl.cpp b/Source/Modio/Private/Types/ModioTokenPackListUImpl.cpp new file mode 100644 index 00000000..50a504d2 --- /dev/null +++ b/Source/Modio/Private/Types/ModioTokenPackListUImpl.cpp @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2024 mod.io Pty Ltd. + * + * This file is part of the mod.io UE4 Plugin. + * + * Distributed under the MIT License. (See accompanying file LICENSE or + * view online at ) + * + */ + +#include "Types/ModioTokenPackList.h" + +#include "Internal/Convert/List.h" +#include "ModioSDK.h" + +FModioTokenPackList::FModioTokenPackList(const FModioPagedResult& PagedResult, TArray&& TokenPackList) + : FModioPagedResult(PagedResult), + FModioList(MoveTemp(TokenPackList)) +{} + +FModioTokenPackList::FModioTokenPackList(TArray TokenPackList) + : FModioList(MoveTemp(TokenPackList)) +{} + +FModioOptionalTokenPackList::FModioOptionalTokenPackList(TOptional&& TokenPackList) + : Internal(MoveTemp(TokenPackList)) +{} diff --git a/Source/Modio/Public/Libraries/ModioCommonTypesLibrary.h b/Source/Modio/Public/Libraries/ModioCommonTypesLibrary.h index 4b099d46..46327ae5 100644 --- a/Source/Modio/Public/Libraries/ModioCommonTypesLibrary.h +++ b/Source/Modio/Public/Libraries/ModioCommonTypesLibrary.h @@ -23,16 +23,17 @@ class MODIO_API UModioCommonTypesLibrary : public UBlueprintFunctionLibrary GENERATED_BODY() public: /** - * @brief Create a game id from a integer, should only be used in conjunction with InitializeAsync - * @param GameId - a positive integer that maps to your game + * @brief Create a game id from a integer. Should only be used in conjunction with + * [`InitializeAsync`](#initializeasync) + * @param GameId A positive integer that maps to your game */ UFUNCTION(BlueprintPure, category = "mod.io|Utilities", meta = (NativeMakeFunc)) static FModioGameID MakeGameId(int64 GameId); /** - * @brief Converts a game id to a string so you can debug output it - * @param GameId - Input Game Id - * @return InvalidGameId if invalid + * @brief Converts a game id to a string for debugging purposes + * @param GameId Input Game Id + * @return Empty if invalid */ UFUNCTION(BlueprintPure, meta = (DisplayName = "ToString (ModioGameId)", CompactNodeTitle = "->", BlueprintAutocast), @@ -40,27 +41,29 @@ class MODIO_API UModioCommonTypesLibrary : public UBlueprintFunctionLibrary static FString Conv_GameIDToString(FModioGameID GameId); /** - * @brief Creates an AuthenticationParams object - * @param AuthToken - Authentication provider-supplied OAuth token - * @param EmailAddress - User email address, can be left blank - * @param bHasAcceptedTOS - Has the user been shown the TOS and accepted the TOS? - * @return The constructed FModioAuthenticationParams object for use with <> + * @brief Creates a `ModioAuthenticationParams` object + * @param AuthToken Authentication provider-supplied OAuth token + * @param EmailAddress User email address, can be left blank + * @param bHasAcceptedTOS Has the user been shown the Terms of Service and accepted the Terms of Service? + * @return The constructed `ModioAuthenticationParams` object for use with + * [`AuthenticateUserExternalAsync`](#authenticateuserexternalasync) */ UFUNCTION(BlueprintPure, category = "mod.io|Utilities", meta = (NativeMakeFunc)) static FModioAuthenticationParams MakeAuthParams(const FString AuthToken, const FString EmailAddress, const bool bHasAcceptedTOS); /** - * @brief Create a ApiKey id from a string, should only be used in conjunction with InitializeAsync - * @param ApiKey - a api key from your settings panel on mod.io + * @brief Create an ApiKey id from a string. Should only be used in conjunction with + * [`InitializeAsync`](#initializeasync) + * @param ApiKey The api key from your settings panel on mod.io */ UFUNCTION(BlueprintPure, category = "mod.io|Utilities", meta = (NativeMakeFunc)) static FModioApiKey MakeApiKey(const FString ApiKey); /** - * @brief Converts a ApiKey string so you can debug output it + * @brief Converts a `ModioApiKey` to a string for debugging purposes * @param ApiKey Input Api Key - * @return InvalidApiKey if invalid + * @return Empty if invalid */ UFUNCTION(BlueprintPure, meta = (DisplayName = "ToString (ModioApiKey)", CompactNodeTitle = "->", BlueprintAutocast), @@ -68,18 +71,18 @@ class MODIO_API UModioCommonTypesLibrary : public UBlueprintFunctionLibrary static FString Conv_ApiKeyToString(FModioApiKey ApiKey); /** - * @brief Converts a ModId string so you can debug output it + * @brief Converts a `ModioModID` to a string for debugging purposes * @param ModID Input Mod ID - * @return InvalidModID if invalid + * @return Empty if invalid */ UFUNCTION(BlueprintPure, meta = (DisplayName = "ToString (ModioModID)", CompactNodeTitle = "->", BlueprintAutocast), Category = "mod.io|Utilities|String") static FString Conv_ModIDToString(FModioModID ModID); /** - * @brief Converts a FFileMetadataID to string so you can debug output it + * @brief Converts an `FileMetadataID` to a string for debugging purposes * @param FileMetadataID Input File metadata ID - * @return InvalidFileMetadataID if invalid + * @return Empty if invalid */ UFUNCTION(BlueprintPure, meta = (DisplayName = "ToString (FileMetadataID)", CompactNodeTitle = "->", BlueprintAutocast), @@ -87,9 +90,9 @@ class MODIO_API UModioCommonTypesLibrary : public UBlueprintFunctionLibrary static FString Conv_FileMetadataIDToString(FModioFileMetadataID FileMetadataID); /** - * @brief Converts a UserID string so you can debug output it - * @param UserID - - * @return InvalidUserID if invalid + * @brief Converts a `ModioUserID` to a string for debugging purposes + * @param UserID User ID to convert + * @return Empty if invalid */ UFUNCTION(BlueprintPure, meta = (DisplayName = "ToString (ModioUserID)", CompactNodeTitle = "->", BlueprintAutocast), @@ -97,9 +100,9 @@ class MODIO_API UModioCommonTypesLibrary : public UBlueprintFunctionLibrary static FString Conv_UserIDToString(FModioUserID UserID); /** - * @brief Converts a EmailAddress string so you can debug output it - * @param EmailAddress - - * @return InvalidEmailAddress if invalid + * @brief Converts a `ModioEmailAddress` string for debugging purposes + * @param EmailAddress Email address to convert + * @return Empty if invalid */ UFUNCTION(BlueprintPure, meta = (DisplayName = "ToString (ModioEmailAddress)", CompactNodeTitle = "->", BlueprintAutocast), @@ -107,9 +110,9 @@ class MODIO_API UModioCommonTypesLibrary : public UBlueprintFunctionLibrary static FString Conv_EmailAddressToString(FModioEmailAddress EmailAddress); /** - * @brief Converts a EmailAuthCode string so you can debug output it - * @param EmailAuthCode - - * @return InvalidEmailAuthCode if invalid + * @brief Converts a `ModioEmailAuthCode` string for debugging purposes + * @param EmailAuthCode Email auth code to convert + * @return Empty if invalid */ UFUNCTION(BlueprintPure, meta = (DisplayName = "ToString (ModioEmailAuthCode)", CompactNodeTitle = "->", BlueprintAutocast), @@ -117,7 +120,7 @@ class MODIO_API UModioCommonTypesLibrary : public UBlueprintFunctionLibrary static FString Conv_EmailAuthCodeToString(FModioEmailAuthCode EmailAuthCode); /** - * @brief Make a email address from a string + * @brief Make an email address from a string * @param Email Input string to convert * @return FModioEmailAddress object */ @@ -127,8 +130,8 @@ class MODIO_API UModioCommonTypesLibrary : public UBlueprintFunctionLibrary static FModioEmailAddress Conv_StringToEmailAddress(const FString& Email); /** - * @brief Make a email auth code from a string - * @param GameId Input string + * @brief Make an email auth code from a string + * @param AuthCode Input string to convert * @return Auth code for submission */ UFUNCTION(BlueprintPure, @@ -137,91 +140,110 @@ class MODIO_API UModioCommonTypesLibrary : public UBlueprintFunctionLibrary static FModioEmailAuthCode Conv_StringToEmailAuthCode(const FString& AuthCode); /** - * @brief Make initialization options, should only be used in conjunction with InitializeAsync - * @param GameId - a positive integer that maps to your game - * @param APIKey - APIKey available at https://.test.mod.io/edit/api or - * https://.mod.io/edit/api - * @param GameEnvironment - If your environment is setup on test or production + * @brief Make [`ModioInitializeOptions`](#modioinitializeoptions). Should only be used in conjunction with + * [`InitializeAsync`](#initializeasync). + * @param GameId - A positive integer that maps to your game. This can be found in the admin section of your game's + * page at https://mod.io/ + * @param APIKey - The API key for your game. This can be found in the admin section of your game's page at + * https://mod.io/ + * @param GameEnvironment - The environment your game has been set up on: test or live. + * @param PortalInUse The [`EModioPortal`](#EModioPortal) representing the store or service your game is being + * @param bUseBackgroundThread - Whether to run the mod.io SDK on a background thread. Defaults to `true`. + * distributed through. Defaults to `EModioPortal::None`. */ UFUNCTION(BlueprintPure, category = "mod.io|Utilities", meta = (NativeMakeFunc)) static FModioInitializeOptions MakeInitializeOptions(int64 GameId, const FString& APIKey, - EModioEnvironment GameEnvironment, - EModioPortal PortalInUse = EModioPortal::None); + EModioEnvironment GameEnvironment, + EModioPortal PortalInUse = EModioPortal::None, bool bUseBackgroundThread = true); /** - * @brief Changes the game id for the provided set of initialization options - * @param Options - The template initialization options + * @brief Changes the game id for the provided set of [`ModioInitializeOptions`](#modioinitializeoptions) + * @param Options - The template [`ModioInitializeOptions`](#modioinitializeoptions) * @param GameId - The new game id to use - * @return New Initialization Options object with the game id set to the desired value + * @return New [`ModioInitializeOptions`](#modioinitializeoptions) object with the game id set to the desired value */ UFUNCTION(BlueprintPure, category = "mod.io|Utilities") static FModioInitializeOptions SetGameId(const FModioInitializeOptions& Options, int64 GameId); /** - * @brief Changes the API key for the provided set of initialization options - * @param Options - The template initialization options + * @brief Changes the API key for the provided set of [`ModioInitializeOptions`](#modioinitializeoptions) + * @param Options - The template [`ModioInitializeOptions`](#modioinitializeoptions) * @param APIKey - The new API key to use - * @return New Initialization Options object with the API key set to the desired value + * @return New [`ModioInitializeOptions`](#modioinitializeoptions) object with the API key set to the desired value */ UFUNCTION(BlueprintPure, category = "mod.io|Utilities", meta = (DisplayName = "Set API Key")) static FModioInitializeOptions SetAPIKey(const FModioInitializeOptions& Options, const FString& APIKey); /** - * @brief Changes the game environment for the provided set of initialization options - * @param Options - The template initialization options + * @brief Changes the game environment for the provided set of [`ModioInitializeOptions`](#modioinitializeoptions) + * @param Options - The template [`ModioInitializeOptions`](#modioinitializeoptions) * @param GameEnvironment - The new environment to use - * @return New Initialization Options object with the game environment set to the desired value + * @return New [`ModioInitializeOptions`](#modioinitializeoptions) object with the game environment set to the + * desired value */ UFUNCTION(BlueprintPure, category = "mod.io|Utilities") static FModioInitializeOptions SetGameEnvironment(const FModioInitializeOptions& Options, EModioEnvironment GameEnvironment); /** - * @brief Changes the portal for the provided set of initialization options - * @param Options - The template initialization options + * @brief Changes the portal for the provided set of [`ModioInitializeOptions`](#modioinitializeoptions) + * @param Options - The template [`ModioInitializeOptions`](#modioinitializeoptions) * @param PortalToUse - The new portal to use - * @return New Initialization Options object with the portal set to the desired value + * @return New [`ModioInitializeOptions`](#modioinitializeoptions) object with the portal set to the desired value */ UFUNCTION(BlueprintPure, category = "mod.io|Utilities") static FModioInitializeOptions SetPortal(const FModioInitializeOptions& Options, EModioPortal PortalToUse); /** - * @brief Changes the session identifier for the provided set of initialization options - * @param Options - The template initialization options + * @brief Changes the background thread usage for the provided set of [`ModioInitializeOptions`](#modioinitializeoptions) + * @param Options - The template [`ModioInitializeOptions`](#modioinitializeoptions) + * @param bUseBackgroundThread - Whether to use a background thread + * @return New [`ModioInitializeOptions`](#modioinitializeoptions) object with the background thread usage set to the + * desired value + */ + UFUNCTION(BlueprintPure, category = "mod.io|Utilities") + static FModioInitializeOptions SetBackgroundThread(const FModioInitializeOptions& Options, bool bUseBackgroundThread); + + /** + * @brief Changes the session identifier for the provided set of [`ModioInitializeOptions`](#modioinitializeoptions) + * @param Options - The template [`ModioInitializeOptions`](#modioinitializeoptions) * @param SessionIdentifier - The new session id to use - * @return New Initialization Options object with the session identifier set to the desired value + * @return New [`ModioInitializeOptions`](#modioinitializeoptions) object with the session identifier set to the + *desired value **/ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities") static FModioInitializeOptions SetSessionIdentifier(const FModioInitializeOptions& Options, const FString& SessionIdentifier); /** - * @brief Sets extended initialization parameters for the provided set of initialization options - * @param Options - The template initialization options + * @brief Sets extended initialization parameters for the provided set of + * [`ModioInitializeOptions`](#modioinitializeoptions) + * @param Options - The template [`ModioInitializeOptions`](#modioinitializeoptions) * @param ExtendedParameters - The new extended parameters to use (will overwrite existing values) - * @return New Initialization Options object with the extended parameters set to the desired value + * @return New [`ModioInitializeOptions`](#modioinitializeoptions) object with the extended parameters set to the + * desired value */ UFUNCTION(BlueprintPure, category = "mod.io|Utilities") static FModioInitializeOptions SetExtendedInitializationParameters( const FModioInitializeOptions& Options, const TMap& ExtendedParameters); /** - * @brief Retrieves the raw underlying value from a FModioModID. FModioModIDs are intended as opaque types, so use - * with care. - * @param In - the FModioModID to retrieve the value for + * @brief Retrieves the raw underlying value from an `ModioModID`. `ModioModID`s are intended as opaque types, so + * use with care. + * @param In The `ModioModID` to retrieve the value for * @return The underlying value */ UFUNCTION(BlueprintPure, BlueprintCallable, Category = "mod.io|Utilities") static int64 GetRawValueFromModID(const FModioModID& In); /** - * @brief Compares two ModioModIDs, returning true if equal + * @brief Compares two mod IDs to check whether they're equal */ UFUNCTION(BlueprintPure, BlueprintCallable, Category = "mod.io|Utilities", meta = (CompactNodeTitle = "==", Keywords = "== equal", DisplayName = "ModioModID == ModioModID")) static bool EqualTo(const FModioModID& A, const FModioModID& B); /** - * @brief Compares two ModioModIDs, returning true if not equal + * @brief Compares two mod IDs to check whether they're not equal */ UFUNCTION(BlueprintPure, BlueprintCallable, Category = "mod.io|Utilities", meta = (CompactNodeTitle = "!=", Keywords = "!= not equal", DisplayName = "ModioModID != ModioModID")) diff --git a/Source/Modio/Public/Libraries/ModioCreateModLibrary.h b/Source/Modio/Public/Libraries/ModioCreateModLibrary.h index 38b6eb96..f7567f3a 100644 --- a/Source/Modio/Public/Libraries/ModioCreateModLibrary.h +++ b/Source/Modio/Public/Libraries/ModioCreateModLibrary.h @@ -29,7 +29,7 @@ class MODIO_API UModioCreateModLibrary : public UBlueprintFunctionLibrary public: UFUNCTION(BlueprintCallable, Category = "mod.io|Create Mod Params", meta = (DeprecatedProperty, - DeprecationMessage = "Deprecated as of 2023.6 release. Please use the <> instead.")) + DeprecationMessage = "Deprecated as of 2023.6 release. Please use the `SetInitialVisibility` instead.")) static void SetInitialVisibility_DEPRECATED(UPARAM(ref) FModioCreateModParams& In, bool InitialVisibility); UFUNCTION(BlueprintCallable, Category = "mod.io|Create Mod Params") diff --git a/Source/Modio/Public/Libraries/ModioEditModLibrary.h b/Source/Modio/Public/Libraries/ModioEditModLibrary.h index 428e48a2..23e8b6c5 100644 --- a/Source/Modio/Public/Libraries/ModioEditModLibrary.h +++ b/Source/Modio/Public/Libraries/ModioEditModLibrary.h @@ -13,8 +13,8 @@ #include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "Types/ModioCommonTypes.h" -#include "Types/ModioModInfo.h" #include "Types/ModioEditModParams.h" +#include "Types/ModioModInfo.h" #include "ModioEditModLibrary.generated.h" @@ -36,8 +36,7 @@ class MODIO_API UModioEditModLibrary : public UBlueprintFunctionLibrary static void SetNamePath(UPARAM(ref) FModioEditModParams& In, FString NamePath); UFUNCTION(BlueprintCallable, Category = "mod.io|Edit Mod Params", - meta = (DeprecatedProperty, - DeprecationMessage = "Deprecated as of 2023.6 release. Please use the <> instead.")) + meta = (DeprecatedProperty, DeprecationMessage = "Deprecated as of 2023.6 release. Please use `SetVisibility` with `EModioObjectVisibilityFlags Visibility` instead.")) static void SetVisibility_DEPRECATED(UPARAM(ref) FModioEditModParams& In, bool Visibility); UFUNCTION(BlueprintCallable, Category = "mod.io|Edit Mod Params") diff --git a/Source/Modio/Public/Libraries/ModioErrorCodeLibrary.h b/Source/Modio/Public/Libraries/ModioErrorCodeLibrary.h index 8cbde3fd..b5f7dab1 100644 --- a/Source/Modio/Public/Libraries/ModioErrorCodeLibrary.h +++ b/Source/Modio/Public/Libraries/ModioErrorCodeLibrary.h @@ -22,17 +22,15 @@ class MODIO_API UModioErrorCodeLibrary : public UBlueprintFunctionLibrary GENERATED_BODY() public: /** - * Checks if a error code contains a error - * @param Error - - * @return true if the error code is a error + * @brief Checks if an error code contains a error + * @return true if the error code is an error */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities|Error", meta = (CompactNodeTitle = "Error", BlueprintAutocast)) static bool IsError(const FModioErrorCode& Error); /** - * Checks if a error code contains a error - * @param Error - - * @return true if the error code is a error + * @brief Checks if an error code contains a error + * @return true if the error code is an error */ UFUNCTION(BlueprintCallable, Category = "mod.io|Utilities|Error", meta = (DisplayName = "IsError", ExpandBoolAsExecs = "ReturnValue")) @@ -40,23 +38,21 @@ class MODIO_API UModioErrorCodeLibrary : public UBlueprintFunctionLibrary /** - * Get underlying error code - * @param Error - - * @return 0 if there is no error + * @brief Get underlying error code for an FModioErrorCode. + * @return The underlying error code. 0 represents no error. */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities|Error") static int32 GetValue(const FModioErrorCode& Error); /** - * Get the textual representation of the error - * @param Error - - * @return + * @brief Get the textual representation of the error + * @return An `FString` message describing the error */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities|Error") static FString GetMessage(const FModioErrorCode& Error); /** - * Helper method to reconstruct a mod.io error passed via code that cannot reference mod.io types + * @brief Helper method to reconstruct a mod.io error passed via code that cannot reference mod.io types * @param Value The numeric value of the code * @param Category The category ID (populated by native code) */ diff --git a/Source/Modio/Public/Libraries/ModioErrorConditionLibrary.h b/Source/Modio/Public/Libraries/ModioErrorConditionLibrary.h index e87aee38..c425ac48 100644 --- a/Source/Modio/Public/Libraries/ModioErrorConditionLibrary.h +++ b/Source/Modio/Public/Libraries/ModioErrorConditionLibrary.h @@ -26,7 +26,7 @@ class MODIO_API UModioErrorConditionLibrary : public UBlueprintFunctionLibrary * @brief Checks if the passed-in ErrorCode matches the specified error condition * @param ErrorCode The code to check * @param Condition The error condition to check against - * @return true if the code matches the condition + * @return True if the code matches the condition */ UFUNCTION(BlueprintCallable, Category = "mod.io|Error Handling") static bool ErrorCodeMatches(FModioErrorCode ErrorCode, EModioErrorCondition Condition); diff --git a/Source/Modio/Public/Libraries/ModioImageLibrary.h b/Source/Modio/Public/Libraries/ModioImageLibrary.h index fe545b91..c7643fec 100644 --- a/Source/Modio/Public/Libraries/ModioImageLibrary.h +++ b/Source/Modio/Public/Libraries/ModioImageLibrary.h @@ -11,12 +11,11 @@ #pragma once #include "Kismet/BlueprintFunctionLibrary.h" #include "Types/ModioCommonTypes.h" -#include "Types/ModioImageWrapper.h" #include "Types/ModioImageState.h" +#include "Types/ModioImageWrapper.h" #include "ModioImageLibrary.generated.h" - DECLARE_DYNAMIC_DELEGATE_OneParam(FOnLoadImageDelegate, class UTexture2DDynamic*, Texture); UCLASS() @@ -39,14 +38,14 @@ class MODIO_API UModioImageLibrary : public UBlueprintFunctionLibrary /** * If a logo size is EModioLogoSize::Original, then the size of the Logo returned, * else, the thumbnail size a logo is returned - * @param Logo If null and EModioLogoSize::Original is passed, then (0, 0) is returned + * @param Logo If null and `EModioLogoSize::Original` is passed, then (0, 0) is returned * @param LogoSize The size of the logo we want to return * * @return Dimensions of the logo if displayed in a 1:1 pixel ratio */ UFUNCTION(BlueprintPure, Category = "mod.io|Image") static FVector2D GetLogoSize(class UTexture* Logo, EModioLogoSize LogoSize); - + /** * If a avatar size is EModioAvatarSize::Original, then the size of the Logo returned, * else, the thumbnail size a avatar is returned diff --git a/Source/Modio/Public/Libraries/ModioModCollectionLibrary.h b/Source/Modio/Public/Libraries/ModioModCollectionLibrary.h index 8b83324e..7f68daf5 100644 --- a/Source/Modio/Public/Libraries/ModioModCollectionLibrary.h +++ b/Source/Modio/Public/Libraries/ModioModCollectionLibrary.h @@ -34,9 +34,8 @@ class MODIO_API UModioModCollectionLibrary : public UBlueprintFunctionLibrary static const FModioModInfo& GetModProfile(const FModioModCollectionEntry& Entry); /** - * @return Path to the mod's installation folder on disk - * NOTE: If the mod is not yet installed this path may not yet exist. Check - * xref:GetModState[] before trying to load files in this location + * @return Path to the mod's installation folder on disk. If the mod is not yet installed this path may not yet exist. Check + * `GetModState` before trying to load files in this location **/ UFUNCTION(BlueprintPure, Category = "mod.io|Mods") static const FString GetPath(const FModioModCollectionEntry& Entry); diff --git a/Source/Modio/Public/Libraries/ModioModProgressInfoLibrary.h b/Source/Modio/Public/Libraries/ModioModProgressInfoLibrary.h index c73de779..8c13427c 100644 --- a/Source/Modio/Public/Libraries/ModioModProgressInfoLibrary.h +++ b/Source/Modio/Public/Libraries/ModioModProgressInfoLibrary.h @@ -27,7 +27,7 @@ class MODIO_API UModioModProgressInfoLibrary : public UBlueprintFunctionLibrary public: /** * @brief Returns a EModioModProgressState indicating which state the mod operation is in - * @param Info the progress struct to query + * @param Info The progress struct to query */ UFUNCTION(BlueprintPure, Category = "ModProgressInfo") static EModioModProgressState GetCurrentState(const FModioModProgressInfo& Info) @@ -52,7 +52,7 @@ class MODIO_API UModioModProgressInfoLibrary : public UBlueprintFunctionLibrary * @brief Retrieves the total amount of progress required for the specified state. * @param Info the progress struct to query * @param State which state to query total progress for - * @return Modio::FileSize for total progress in bytes + * @return `Modio::FileSize` for total progress in bytes */ UFUNCTION(BlueprintPure, Category = "ModProgressInfo") static FModioUnsigned64 GetTotalProgress(const FModioModProgressInfo& Info, EModioModProgressState State) diff --git a/Source/Modio/Public/Libraries/ModioSDKLibrary.h b/Source/Modio/Public/Libraries/ModioSDKLibrary.h index 34020e65..203b528c 100644 --- a/Source/Modio/Public/Libraries/ModioSDKLibrary.h +++ b/Source/Modio/Public/Libraries/ModioSDKLibrary.h @@ -11,6 +11,7 @@ #pragma once #include "Kismet/BlueprintFunctionLibrary.h" +#include "Types/ModioAuthenticationParams.h" #include "Types/ModioCommonTypes.h" #include "Types/ModioInitializeOptions.h" @@ -22,61 +23,61 @@ class UModioSDKLibrary : public UBlueprintFunctionLibrary GENERATED_BODY() public: /** - * Get the game id specified in the mod.io project settings + * @brief Get the game id specified in the mod.io project settings */ UFUNCTION(BlueprintPure, category = "mod.io|Utilities") static MODIO_API FModioGameID GetProjectGameId(); /** - * Get the api key specified in the mod.io project settings + * @brief Get the api key specified in the mod.io project settings */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities") static MODIO_API FModioApiKey GetProjectApiKey(); /** - * Get the environment specified in the mod.io project settings + * @brief Get the environment specified in the mod.io project settings */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities") static MODIO_API EModioEnvironment GetProjectEnvironment(); /** - * Get the options needed to initialize the mod.io SDK specified in the project settings + * @brief Get the options needed to initialize the mod.io SDK specified in the project settings * @deprecated Use GetProjectInitializeOptionsForSessionId() instead */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities", meta = (DeprecatedFunction, DeprecationMessage = "Use GetProjectInitializeOptionsForSessionId() instead")) static MODIO_API FModioInitializeOptions GetProjectInitializeOptions(); /** - * Get the options needed to initialize the mod.io SDK specified in the project settings - * @param The LocalSessionIdentifier option to initialize project with + * @brief Get the options needed to initialize the mod.io SDK specified in the project settings + * @param SessionId The LocalSessionIdentifier option to initialize project with */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities") static MODIO_API FModioInitializeOptions GetProjectInitializeOptionsForSessionId(const FString SessionId); /** - * Does a basic validation if the email address supplied has a valid form - * @return true if the email address has a valid format + * @brief Does a basic validation if the email address supplied has a valid form + * @return True if the email address has a valid format */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities") static MODIO_API bool IsValidEmailAddressFormat(const FString& String); /** - * Checks if the string has the same format as the mod.io security code - * @return true if the security code has a valid format + * @brief Checks if the string has the same format as the mod.io security code + * @return True if the security code has a valid format */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities") static MODIO_API bool IsValidSecurityCodeFormat(const FString& String); /** - * Get desired file size unit based on the size of the file + * @brief Get desired file size unit based on the size of the file * @return the desired file size unit */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities") static MODIO_API EFileSizeUnit GetDesiredFileSizeUnit(int64 FileSize); /** - * Converts a filesize to a human readable string with the appropriate unit + * @brief Converts a filesize to a human readable string with the appropriate unit * * @param FileSize - Filesize in bytes * @param MaxDecimals - Maximum amount of decimals to display of the filesize @@ -107,8 +108,10 @@ class UModioSDKLibrary : public UBlueprintFunctionLibrary Category = "mod.io|Utilities|Text") static MODIO_API FText Conv_Int64ToText(int64 Value, bool bAlwaysSign = false, bool bUseGrouping = true, int32 MinimumIntegralDigits = 1, int32 MaximumIntegralDigits = 324); - - /** @brief Dividend/Divisor and return the floating point result with no checks **/ + /** + * @brief Calculates percentage using two `int64` params + * @return The floating point result of Dividend/Divisor with no checks + */ UFUNCTION(BlueprintPure, meta = (DisplayName = "Get Percent (integer64/integer64)", CompactNodeTitle = "Percent", Keywords = "/ % percent pct"), @@ -116,7 +119,7 @@ class UModioSDKLibrary : public UBlueprintFunctionLibrary static MODIO_API float Pct_Int64Int64(int64 Dividend, int64 Divisor); - /** + /** * @brief Sets the correct decimals depending on the file size or speed * * @param Input value of bytes per second as FText @@ -141,8 +144,8 @@ class UModioSDKLibrary : public UBlueprintFunctionLibrary static MODIO_API FString GetShortenedNumberAsString(int64 Number); /** - * @brief Get Session Id for Windows for initialization of the SDK - * return empty string if you are not on Windows + * @brief Get Session Id for Windows for initialization of the SDK + * @return The windows session id, or an empty string if you are not on Windows */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities") static MODIO_API FString GetDefaultSessionIdWindows(); @@ -162,4 +165,11 @@ class UModioSDKLibrary : public UBlueprintFunctionLibrary */ UFUNCTION(BlueprintPure, Category = "mod.io|Utilities") static MODIO_API EModioLanguage GetLanguageCodeFromString(FString LanguageCode); + + /** + * @brief Get the purchase category to pass to the store overlay UI for a given portal. + * @return string of ID for the purchase category for a given Portal in use, returns empty if the given key was not found/not defined + */ + UFUNCTION(BlueprintPure, category = "mod.io|Utilities") + static MODIO_API FString GetMonetizationPurchaseCategory(EModioPortal Portal); }; diff --git a/Source/Modio/Public/Loc/ModioEnumLocalizationHelpers.h b/Source/Modio/Public/Loc/ModioEnumLocalizationHelpers.h index 52150bbb..635f9def 100644 --- a/Source/Modio/Public/Loc/ModioEnumLocalizationHelpers.h +++ b/Source/Modio/Public/Loc/ModioEnumLocalizationHelpers.h @@ -46,10 +46,11 @@ class MODIO_API UModioUIEnumLocalizationLibrary : public UBlueprintFunctionLibra // I'd prefer to do this such that you can pass in the enum value rather than the name but don't really want to deal // with a whole custom K2Node to properly support generic enum values - /// @brief Returns the string table FText for a given enum value's FName - *Only works with enums registered via - /// ModioUI::RegisterEnumAsLocalizable* - /// @param EnumName The Name from a given enum value - /// @return localized Text for the specified enum value, or dummy FText if not found + /** + * @brief Returns the string table `FText` for a given enum value's `FName`. Only works with enums registered via `ModioUI::RegisterEnumAsLocalizable`. + * @param EnumName The Name from a given enum value + * @return localized Text for the specified enum value, or dummy FText if not found + */ UFUNCTION(BlueprintCallable, BlueprintPure, Category = "mod.io|UI|Localization") static FText GetLocalizedTextForEnumByName(const FName& EnumName) { @@ -69,11 +70,13 @@ class MODIO_API UModioUIEnumLocalizationLibrary : public UBlueprintFunctionLibra /** * Converts a Unsigned64 filesize to a human readable string with the appropriate unit * - * @param FileSize - Filesize in bytes - * @param MaxDecimals - Maximum amount of decimals to display of the filesize - * @param Unit - If Largest, then it tries to display the size in the largest unit that will have a integral + * @param FileSize Filesize in bytes + * @param MinDecimals Minimum number of decimals to display for the filesize + * @param MaxDecimals Maximum number of decimals to display for the filesize + * @param Unit If `Largest`, it tries to display the size in the largest unit that will have a integral * part > 0, else it displays the filesize in the specified unit - * @return A text formatted from your specifications + * @param bIncludeUnitName Whether or not to include the unit name + * @return An `FText` formatted with your specifications */ UFUNCTION(BlueprintPure, Category = "mod.io|Text", meta = (DisplayName = "FileSizeToText (Unsigned64)", CompactNodeTitle = "FileSizeUnsigned64>Text")) @@ -124,9 +127,11 @@ class MODIO_API UModioUILocalizationLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() public: - /// @brief Returns the string table FText for a given string key - /// @param StringKey The key to look up in the table - /// @return localized Text for the specified key, or StringKey if not found + /** + * @brief Returns the string table `FText` for a given string key + * @param StringKey The key to look up in the table + * @return Localized Text for the specified key, or `StringKey` if not found + */ UFUNCTION(BlueprintCallable, BlueprintPure, Category = "mod.io|UI|Localization") static FText GetLocalizedTextFromDefaultTableByKey(const FString& StringKey) { diff --git a/Source/Modio/Public/ModioSettings.h b/Source/Modio/Public/ModioSettings.h index 56f069d2..7e68960b 100644 --- a/Source/Modio/Public/ModioSettings.h +++ b/Source/Modio/Public/ModioSettings.h @@ -10,6 +10,7 @@ #pragma once +#include "Types/ModioAuthenticationParams.h" #include "Types/ModioCommonTypes.h" #include "Types/ModioFilterParams.h" #include "Types/ModioInitializeOptions.h" @@ -84,6 +85,13 @@ class MODIO_API UModioSettings : public UObject UPROPERTY(EditDefaultsOnly, config, Category = "Feature Flags", meta=(DisplayName="Enable Mod Downvoting in UI")) bool bEnableModDownvoteFeature; + /** + * If you intend to sell Premium Currency through the relevant platform store, this Map is used to invoke the platform-native storefront on the given platform(s). + * See the monetization documentation for more info. + */ + UPROPERTY(EditDefaultsOnly, config, Category = "Monetization", meta = (EditCondition="bEnableMonetizationFeature", EditConditionHides="true")) + TMap PlatformIdentifiers; + private: #if WITH_EDITOR diff --git a/Source/Modio/Public/ModioSubsystem.h b/Source/Modio/Public/ModioSubsystem.h index 84f316fd..efa40601 100644 --- a/Source/Modio/Public/ModioSubsystem.h +++ b/Source/Modio/Public/ModioSubsystem.h @@ -127,6 +127,8 @@ DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnGetUserDelegationTokenDelegate, FModioErro DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnRefreshUserEntitlementsDelegate, FModioErrorCode, ErrorCode, FModioOptionalEntitlementConsumptionStatusList, Entitlements); +DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnPlatformCheckoutDelegate, bool, bSuccess, FString, Message); + class UModioSubsystem; class FModioBackgroundThread : public FRunnable @@ -154,9 +156,9 @@ class FModioBackgroundThread : public FRunnable }; /** - * @brief Thin wrapper around the mod.io SDK. This mostly wraps all the functions available in modio/ModioSDK.h that's - * the public header of the mod.io SDK. It converts mod.io SDK types to a more unreal friendly types and caches some - * expensive operations so that conversions don't need to be done multiple times + * @brief `ModioSubsystem` is a thin wrapper around the mod.io SDK, wrapping all the functions available in the SDK's + * public header `modio/ModioSDK.h`. This subsystem also converts mod.io SDK types to unreal-friendly types and caches + * some expensive operations. */ UCLASS(MinimalAPI) class UModioSubsystem : public UEngineSubsystem @@ -164,8 +166,15 @@ class UModioSubsystem : public UEngineSubsystem GENERATED_BODY() protected: + TUniquePtr BackgroundThread; + friend class UModioUISubsystem; + EModioPortal GetCurrentPortal() const + { + return CachedInitializeOptions.PortalInUse; + } + #if WITH_EDITOR /// @brief Internal method used for emitting a warning during PIE if the Plugin was initialized during that PIE /// session @@ -176,7 +185,14 @@ class UModioSubsystem : public UEngineSubsystem private: bool bUseBackgroundThread = false; + /** + * @brief Internal cache of the options used to initialize this session. Specific properties + * are exposed as protected methods and used by friend classes for additional functionality. + */ + FModioInitializeOptions CachedInitializeOptions; + public: + FOnUserProfileUpdatedDelegate OnUserProfileUpdatedDelegate; /** Begin USubsystem interface */ @@ -185,7 +201,7 @@ class UModioSubsystem : public UEngineSubsystem virtual bool ShouldCreateSubsystem(UObject* Outer) const override; /** End USubsystem interface */ - /// @brief Bind to a function that returns the appropriate EModioLanguage for the game. The Terms of Use will be + /// @brief Bind to a function that returns the appropriate `EModioLanguage` for the game. The Terms of Use will be /// displayed in this language during authentication. FGetCurrentLanguageDelegate GetCurrentLanguage; @@ -196,33 +212,32 @@ class UModioSubsystem : public UEngineSubsystem MODIO_API void KillBackgroundThread(); /** - * @brief Initializes the SDK for the given user. Loads the state of mods installed on the system as well as the + * @brief Initializes the SDK for the given user. Loads the state of all mods installed on the system as well as the * set of mods the specified user has installed on this device * @param InitializeOptions Parameters to the function packed as a struct where all members needs to be initialized * for the call to succeed - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory FilesystemError|Couldn't create the user data or common data folders - * @errorcategory ConfigurationError|InitializeOptions contains an invalid value - inspect ec.value() to determine - * what was incorrect - * @errorcategory SDKAlreadyInitialized|SDK already initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `FilesystemError`|Couldn't create the user data or common data folders + * @errorcategory `ConfigurationError`|`InitializeOptions` contains an invalid value. Inspect `ec.value()` to + * determine what was incorrect + * @errorcategory `SDKAlreadyInitialized`|SDK already initialized */ MODIO_API void InitializeAsync(const FModioInitializeOptions& InitializeOptions, FOnErrorOnlyDelegateFast OnInitComplete); /** - * @brief Sets the global logging level - messages with a log level below the specified value will not be displayed + * @brief Sets the global logging level. * @note This is a transient function, and won't be stored to disk. So at the next engine start, the log level will - * be restored to the one in your FModioRuntimeSettings - * @param UnrealLogLevel Value indicating which priority of messages should be included in the log output + * be restored to the one in your `ModioRuntimeSettings` + * @param UnrealLogLevel Determines which messages to include in the log output. Messages with a log level below the + * specified value will not be displayed. */ UFUNCTION(BlueprintCallable, Category = "mod.io") MODIO_API void SetLogLevel(EModioLogLevel UnrealLogLevel); /** - * @brief Runs any pending SDK work on the calling thread, including invoking any callbacks passed to asynchronous + * @brief Runs any pending mod.io work on the calling thread and invokes any callbacks passed to asynchronous * operations. - * NOTE: This should be called while xref:InitializeAsync[] and xref:ShutdownAsync[] are running, - as they both utilize the internal event loop for functionality. */ UFUNCTION(BlueprintCallable, Category = "mod.io") MODIO_API void RunPendingHandlers(); @@ -230,17 +245,17 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Cancels any running internal operations, frees SDK resources, and invokes any pending callbacks with an *OperationCanceled error category. This function will NOT block while the deinitialization occurs. - * @param OnShutdownComplete Callback invoked when the plugin is shut down and calling <> is no - * longer required + * @param OnShutdownComplete Callback invoked when the plugin is shut down and calling + *[`RunPendingHandlers`](#run-pending-handlers) is no longer required * @requires initialized-sdk - * @errorcategory SDKNotInitialized|SDK not initialized + * @errorcategory `SDKNotInitialized`|SDK not initialized **/ MODIO_API void ShutdownAsync(FOnErrorOnlyDelegateFast OnShutdownComplete); /** * @brief If the last request to the mod.io servers returned a validation failure, this function returns extended * information describing the fields that failed validation. - * @return Collection of FModioValidationError objects, or empty collection if there were no validation failures + * @return Collection of `ModioValidationError` objects, or empty collection if there were no validation failures * @requires initialized-sdk */ UFUNCTION(BlueprintCallable, Category = "mod.io") @@ -255,29 +270,29 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod does not exist or was deleted - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod does not exist or was deleted + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ MODIO_API void SubscribeToModAsync(FModioModID ModToSubscribeTo, bool IncludeDependencies, FOnErrorOnlyDelegateFast OnSubscribeComplete); /** * @brief Sends a request to the mod.io server to remove the specified mod from the user's list of subscriptions. - * If no other local users are subscribed to the specified mod this function will also mark the mod for + * If no other local users are subscribed to the specified mod, this function will also mark the mod for * uninstallation by the SDK. * @param ModToUnsubscribeFrom Mod ID of the mod requiring unsubscription. - * @param OnUnsubscribeComplete Callback invoked when the unsubscription request is completed. + * @param OnUnsubscribeComplete Callback invoked when the unsubscription request is complete. * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod does not exist or was deleted - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod does not exist or was deleted + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ MODIO_API void UnsubscribeFromModAsync(FModioModID ModToUnsubscribeFrom, FOnErrorOnlyDelegateFast OnUnsubscribeComplete); @@ -290,41 +305,44 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user **/ MODIO_API void FetchExternalUpdatesAsync(FOnErrorOnlyDelegateFast OnFetchDone); /** * @brief Retrieve a list of updates between the users local mod state, and the server-side state. This allows you - *to identify which mods will be modified by the next call to <> in order to perform any - *content management (such as unloading files) that might be required. + * to identify which mods will be modified by the next call to + * [`FetchExternalUpdatesAsync`](#fetchexternalupdatesasync) in order to perform any content management (such as + * unloading files) that might be required. * @param OnPreviewDone Callback invoked when the external state has been retrieved. It contains a dictionary with - *ModID as keys and changes as values. Empty when there are no differences between local and the mod.io API service + * ModID as keys and change maps as values. Empty when there are no differences between local and the mod.io API + * service * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user **/ MODIO_API void PreviewExternalUpdatesAsync(FOnPreviewExternalUpdatesDelegateFast OnPreviewDone); /** * @brief Enables the automatic management of installed mods on the system based on the user's subscriptions. - * @param Callback This callback handler will be invoked with a ModManagementEvent for each mod operation performed - * by the SDK - * @return FModioErrorCode indicating if mod management was enabled successfully - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory ModManagementAlreadyEnabled|Mod management was already enabled. The mod management callback has + * @param Callback This callback handler will be invoked with a + * [`ModioModManagementEvent`](#modiomodmanagementevent) for each mod operation performed by the SDK + * @return An error code indicating success or failure of enabling mod management. Note that this is independent of + * error codes for mod management events. Inspect the `Callback` for information on each mod management event. + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `ModManagementAlreadyEnabled`|Mod management was already enabled. The mod management callback has * not been changed. */ MODIO_API FModioErrorCode EnableModManagement(FOnModManagementDelegateFast Callback); /** * @brief Disables automatic installation or uninstallation of mods based on the user's subscriptions. Allows - * currently processing installation to complete; will cancel any pending operations when called. + * currently processing installation to complete. Will cancel any pending operations when called. **/ UFUNCTION(BlueprintCallable, Category = "mod.io|Mod Management") MODIO_API void DisableModManagement(); @@ -344,14 +362,14 @@ class UModioSubsystem : public UEngineSubsystem * successful or if the mod was already being processed * @requires initialized-sdk * @requires authenticated-user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid or not present in the list of pending operations + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid or not present in the list of pending operations */ UFUNCTION(BlueprintCallable, Category = "mod.io|Mod Management") MODIO_API FModioErrorCode PrioritizeTransferForMod(FModioModID ModToPrioritize); /** * @brief Provides progress information for a mod installation or update operation if one is currently in progress. - * @return Optional ModProgressInfo object containing information regarding the progress of the installation + * @return Optional `ModioModProgressInfo` object containing information regarding the progress of the installation * operation. */ MODIO_API TOptional QueryCurrentModUpdate(); @@ -359,73 +377,73 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Fetches the local view of the user's subscribed mods, including mods that are subscribed but not * yet installed - * @return TMap providing information about the subscribed + * @return `TMap` providing information about the subscribed * mods */ UFUNCTION(BlueprintPure, Category = "mod.io|User") MODIO_API const TMap& QueryUserSubscriptions(); /** - * @brief Fetches the subset of the user's subscribed mods that are installed and therefore ready for loading + * @brief Fetches the subset of the user's subscribed mods that are installed and ready for loading * @param bIncludeOutdatedMods Include subscribed mods that are installed but have an updated version on the server * that has not yet been installed - * @return TMap providing information about the subscribed + * @return `TMap` providing information about the subscribed * mods **/ UFUNCTION(BlueprintPure, Category = "mod.io|User") MODIO_API TMap QueryUserInstallations(bool bIncludeOutdatedMods); /** - * @brief Fetches the currently authenticated mod.io user profile if there is one associated with the current - * platform user - * @return Optional FModioUser object containing profile information + * @brief Fetches the currently authenticated mod.io user profile if there is one. + * @return Optional [`ModioUser`](#modiouser) object containing profile information **/ MODIO_API TOptional QueryUserProfile(); /** - * @brief Fetches all mods installed on the system such that a consuming application can present the information in - * a UI in order to free up space by uninstalling mods - * @return TMap using Mod IDs as keys and ModCollectionEntry objects providing information about mods installed - * on the system regardless of which user installed them + * @brief Fetches all mods installed on the system, including those installed by other users. + * @return A `TMap` of all mods installed on the system, including those + * installed by other users. */ UFUNCTION(BlueprintPure, Category = "mod.io|Mod Management") MODIO_API TMap QuerySystemInstallations(); /** - * @brief Provides a list of mods for the current game, that match the parameters specified in the filter - * @param Filter FModioFilterParams object containing any filters that should be applied to the query - * @param Callback Callback invoked with a status code and an optional ModInfoList providing mod profiles + * @brief Provides a list of mods for the current game that match the parameters specified in the filter + * @param Filter [`ModioFilterParams`](#modiofilterparams) object containing any filters that should be applied to + * the query + * @param Callback Callback invoked with a status code and an optional `ModioModInfoList` providing mod profiles * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized */ MODIO_API void ListAllModsAsync(const FModioFilterParams& Filter, FOnListAllModsDelegateFast Callback); /** - * @brief Provides a list of games for the current user, that match the parameters specified in the filter - * @param Filter FModioFilterParams object containing any filters that should be applied to the query - * @param Callback Callback invoked with a status code and an optional ModInfoList providing mod profiles + * @brief Provides a list of games for the current user that match the parameters specified in the filter + * @param Filter [`ModioFilterParams`](#modiofilterparams) object containing any filters that should be applied to + * the query + * @param Callback Callback invoked with a status code and an optional `ModioModInfoList` providing mod profiles * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory SDKNotInitialized|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `SDKNotInitialized`|SDK not initialized */ MODIO_API void ListUserGamesAsync(const FModioFilterParams& Filter, FOnListUserGamesDelegateFast Callback); /** * @brief Fetches detailed information about the specified game * @param GameID Game ID of the game data to fetch - * @param Callback Callback providing a status code and an optional FModioGameInfo object with the game's extended + * @param Callback Callback providing a status code and an optional `ModioGameInfo` object with the game's extended * information * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory EntityNotFoundError|Specified game does not exist or was deleted - * @errorcategory InvalidArgsError|The supplied game ID is invalid + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `EntityNotFoundError`|Specified game does not exist or was deleted + * @errorcategory `InvalidArgsError`|The supplied game ID is invalid **/ MODIO_API void GetGameInfoAsync(FModioGameID GameID, FOnGetGameInfoDelegateFast Callback); @@ -433,14 +451,14 @@ class UModioSubsystem : public UEngineSubsystem * @brief Fetches detailed information about the specified mod, including description and file metadata for the * most recent release * @param ModId Mod ID of the mod to fetch data - * @param Callback Callback providing a status code and an optional FModioModInfo object with the mod's extended + * @param Callback Callback providing a status code and an optional `ModioModInfo` object with the mod's extended * information * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod does not exist or was deleted - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod does not exist or was deleted + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ MODIO_API void GetModInfoAsync(FModioModID ModId, FOnGetModInfoDelegateFast Callback); @@ -452,11 +470,11 @@ class UModioSubsystem : public UEngineSubsystem * downloaded image * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod media does not exist or was deleted - * @errorcategory InsufficientSpace|Not enough space for the file - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod media does not exist or was deleted + * @errorcategory `InsufficientSpace`|Not enough space for the file + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ MODIO_API void GetModMediaAsync(FModioModID ModId, EModioLogoSize LogoSize, FOnGetMediaDelegateFast Callback); @@ -473,11 +491,11 @@ class UModioSubsystem : public UEngineSubsystem * @param Callback Callback containing a status code and an Optional containing a path to the image file on disk * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod media does not exist or was deleted - * @errorcategory InsufficientSpace|Not enough space for the file - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod media does not exist or was deleted + * @errorcategory `InsufficientSpace`|Not enough space for the file + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ MODIO_API void GetModMediaAsync(FModioModID ModId, EModioGallerySize GallerySize, int32 Index, FOnGetMediaDelegateFast Callback); @@ -496,11 +514,11 @@ class UModioSubsystem : public UEngineSubsystem * downloaded image * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod media does not exist or was deleted - * @errorcategory InsufficientSpace|Not enough space for the file - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod media does not exist or was deleted + * @errorcategory `InsufficientSpace`|Not enough space for the file + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ MODIO_API void GetModMediaAsync(FModioModID ModId, EModioAvatarSize AvatarSize, FOnGetMediaDelegateFast Callback); @@ -510,36 +528,35 @@ class UModioSubsystem : public UEngineSubsystem public: /** * @brief Fetches the available tags used on mods for the current game. These tags can them be used in conjunction - * with the FilterParams passed to ListAllMods + * with the [`ModioFilterParams`](#modiofilterparams) passed to [`ListAllModsAsync`](#listallmodsasync) * Will be cached when first received - * @param Callback Callback providing a status code and an optional ModTagOptions object containing the available - * tags + * @param Callback Callback providing a status code and an optional `ModioModTagOptions` object containing the + *available tags * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized **/ MODIO_API void GetModTagOptionsAsync(FOnGetModTagOptionsDelegateFast Callback); /** * @brief For a given Mod ID, fetches a list of any mods that the creator has marked as dependencies * @param ModID The mod to retrieve dependencies for - * @param Recursive Include child dependencies in a recursive manner. \r\n NOTE: Recursion supports a maximum depth - *of 5. - * @param Callback Callback providing a status code and an optional ModTagOptions object containing the available - * tags + * @param Recursive Include child dependencies in a recursive manner to a maximum depth of 5. + * @param Callback Callback providing a status code and an optional `ModioModTagOptions` object containing the + *available tags * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid * @experimental **/ MODIO_API void GetModDependenciesAsync(FModioModID ModID, bool Recursive, FOnGetModDependenciesDelegateFast Callback); /** - * @brief Gets a new mod handle for use with SubmitNewModAsync. + * @brief Gets a new mod handle for use with [`SubmitNewModAsync`](#submitnewmodasync). * @returns New handle * @experimental */ @@ -547,29 +564,29 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Requests the creation of a new mod on the server with the specified parameters - * @param Handle The ModCreationHandle for this submission. Once this method invokes your callback indicating - * success, the ModCreationHandle is invalid for the rest of the session and you should request a new one for the - * next submission attempt. + * @param Handle The `ModioModCreationHandle` for this submission. Once this method invokes your callback indicating + * success, the `ModioModCreationHandle` is invalid for the rest of the session and you should request a new one for + * the next submission attempt. * @param Params Information about the new mod to create - * @param Callback Callback providing a status code and an optional FModioModID for the newly created mod + * @param Callback Callback providing a status code and an optional `ModioModID` for the newly created mod * @experimental * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory InvalidArgsError|Some fields in Params did not pass validation - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `InvalidArgsError`|Some fields in `Params` did not pass validation + * @errorcategory `UserNotAuthenticatedError`|No authenticated user */ MODIO_API void SubmitNewModAsync(FModioModCreationHandle Handle, FModioCreateModParams Params, FOnSubmitNewModDelegateFast Callback); /** * @brief Queues the upload of a new modfile release for the specified mod using the submitted parameters. This - * function takes an FModioCreateModFileParams object to specify the path to the root folder of the new modfile. + * function takes an `ModioCreateModFileParams` object to specify the path to the root folder of the new modfile. * The plugin will compress the folder's contents into a .zip archive and queue the result for upload. When the - * upload completes, a Mod Management Event will be triggered. Note the plugin is also responsible for - * decompressing the archive upon its installation at a later point in time. + * upload completes, a mod management event will be triggered. Note the plugin is also responsible for decompressing + * the archive upon its installation at a later point in time. * @param Mod The ID of the mod you are submitting a file for * @param Params Information about the mod file being created, including the root path of the directory that will * be archived @@ -577,40 +594,40 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid */ MODIO_API void SubmitNewModFileForMod(FModioModID Mod, FModioCreateModFileParams Params); /** - * @brief Edits the parameters of a mod, by updating any fields set in the Params object to match the passed-in - * values. Fields left empty on the Params object will not be updated. + * @brief Edits the parameters of a mod by updating any fields set in the `Params` object to match the passed-in + * values. Fields left empty on the `Params` object will not be updated. * @param Mod The ID of the mod you wish to edit * @param Params Descriptor containing the fields that should be altered. - * @param Callback The callback invoked when the changes have been submitted, containing an optional updated - * ModInfo object if the edits were performed successfully + * @param Callback The callback invoked when the changes have been submitted containing an optional updated + * `ModioModInfo` object if the edits were performed successfully * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory InvalidArgsError|Some fields in Params did not pass validation - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `InvalidArgsError`|Some fields in `Params` did not pass validation + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid */ MODIO_API void SubmitModChangesAsync(FModioModID Mod, FModioEditModParams Params, FOnGetModInfoDelegateFast Callback); /** * @brief Begins email authentication for the current session by requesting a one-time code be sent to the - * specified email address if it is associated with a mod.io account + * specified email address. * @param EmailAddress The email address to send the code to * @param Callback Callback providing a status code indicating the outcome of the request * @requires initialized-sdk * @requires no-rate-limiting * @requires no-authenticated-user - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized **/ MODIO_API void RequestEmailAuthCodeAsync(const FModioEmailAddress& EmailAddress, FOnErrorOnlyDelegateFast Callback); @@ -622,10 +639,11 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires no-rate-limiting * @requires no-authenticated-user - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserAlreadyAuthenticatedError|Authenticated user already signed-in. De-authenticate the current - * user with ClearUserDataAsync(), and re-initialize the SDK by calling ShutdownAsync() then InitializeAsync(). + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserAlreadyAuthenticatedError`|Current user is already authenticated. De-authenticate the current + * user with [`ClearUserDataAsync`](#clearuserdataasync), and re-initialize the SDK by calling + * [`ShutdownAsync`](#shutdownasync) followed by [`InitializeAsync`](#initializeasync). **/ MODIO_API void AuthenticateUserEmailAsync(const FModioEmailAuthCode& AuthenticationCode, FOnErrorOnlyDelegateFast Callback); @@ -638,40 +656,41 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires no-rate-limiting * @requires no-authenticated-user - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory ConfigurationError|The SDK's configuration is not valid - * @errorcategory InvalidArgsError|The arguments passed to the function have failed validation - * @errorcategory UserTermsOfUseError|The user has not yet accepted the mod.io Terms of Use - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserAlreadyAuthenticatedError|Authenticated user already signed-in. De-authenticate the current - * user with ClearUserDataAsync(), and re-initialize the SDK by calling ShutdownAsync() then InitializeAsync(). + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `ConfigurationError`|The SDK's configuration is not valid + * @errorcategory `InvalidArgsError`|The arguments passed to the function have failed validation + * @errorcategory `UserTermsOfUseError`|The user has not yet accepted the mod.io Terms of Use + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserAlreadyAuthenticatedError`|Current user is already authenticated. De-authenticate the current + * user with [`ClearUserDataAsync`](#clearuserdataasync), and re-initialize the SDK by calling + * [`ShutdownAsync`](#shutdownasync) followed by [`InitializeAsync`](#initializeasync). **/ MODIO_API void AuthenticateUserExternalAsync(const FModioAuthenticationParams& User, EModioAuthenticationProvider Provider, FOnErrorOnlyDelegateFast Callback); /** * @docpublic - * @brief Queries the server to verify the state of the currently authenticated user if there is one present. An - * empty ErrorCode is passed to the callback to indicate successful verification, i.e. the mod.io server was - * contactable and the user's authentication remains valid. - * @param Callback Callback invoked with the results of the verification process + * @brief Queries the server to verify the state of the currently authenticated user if there is one present. + * @param Callback Callback invoked with the results of the verification process. An empty `ModioErrorCode` + * indicates successful verification i.e. the mod.io server was contactable and the user's authentication remains + * valid. * @requires initialized-sdk * @requires no-rate-limiting * @requires authenticated-user - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user */ MODIO_API void VerifyUserAuthenticationAsync(FOnErrorOnlyDelegateFast Callback); /** * @docpublic * @brief This function retrieves the information required for a game to display the mod.io terms of use to a - *player who wishes to create a mod.io account + * player who wishes to create a mod.io account * @param Callback Callback invoked with the terms of use data once retrieved from the server * @requires initialized-sdk - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized **/ MODIO_API void GetTermsOfUseAsync(FOnGetTermsOfUseDelegateFast Callback); @@ -691,8 +710,7 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief De-authenticates the current mod.io user for the current session, and clears all user-specific data - * stored on the current device. Any subscribed mods that are installed but do not have other local users - * subscribed will be uninstalled + * stored on the current device. Any mods that do not have other local users subscribed will be uninstalled * @param Callback Callback providing a status code indicating the outcome of clearing the user data. Error codes * returned by this function are informative only - it will always succeed. **/ @@ -710,9 +728,9 @@ class UModioSubsystem : public UEngineSubsystem * @docpublic * @brief Purchases a mod for the current player * @param ModID ID of the mod to purchase - * @param ExpectedPrice The price the user is expected to pay for the mod, generally ModInfo.Price. This ensures - *that there is consistency between the displayed price and the price in the backend. If there is a mismatch, the - *purchase will fail. + * @param ExpectedPrice The price the user is expected to pay for the mod, generally + * [`ModioModInfo.Price`](#modiomodinfo) . This ensures that there is consistency between the displayed price and + *the price in the backend. If there is a mismatch, the purchase will fail. * @param Callback Callback invoked with purchase information once the purchase is completed. * @requires initialized-sdk * @requires authenticated-user @@ -723,7 +741,7 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic * @brief Gets the users current wallet balance. This will also create a wallet for a user if one does not exist. - * You should ensure this is called prior to calling PurchaseModAsync + * You should ensure this is called prior to calling [`PurchaseModAsync`](#purchasemodasync) * purchase will fail. * @param Callback Callback invoked with the users wallet balance * @requires initialized-sdk @@ -735,7 +753,7 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic * @brief Fetches the user's purchases. This populates a runtime cache of purchase information - * that can be accessed using QueryUserPurchasedMods. + * that can be accessed using [`QueryUserPurchasedMods`](#query-user-purchased-mods). * @param Callback Callback invoked once the call has been completed. * @requires initialized-sdk * @requires authenticated-user @@ -745,7 +763,7 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic - * @brief Get a UserDelegationToken that can be used for S2S service calls. + * @brief Get a user delegation token that can be used for S2S service calls. * @param Callback Callback invoked once the call has been completed. * @requires initialized-sdk * @requires authenticated-user @@ -755,8 +773,9 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic - * @brief Returns the users purchased mods. You must call FetchUserPurchasesAsync to populate the cache/. - * @return Map of FModioModID to FModioModInfo for all purchases a user has made. + * @brief Returns the user's purchased mods. [`FetchUserPurchasesAsync`](#fetchuserpurchasesasync) must be called + *first to populate the cache. + * @return A `TMap` of all purchases a user has made. * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting @@ -778,189 +797,190 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod does not exist or was deleted - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod does not exist or was deleted + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid */ MODIO_API void SubmitModRatingAsync(FModioModID Mod, EModioRating Rating, FOnErrorOnlyDelegateFast Callback); /** * @brief Sends a content report to mod.io. When using this function, please inform your users that if they provide - * their contact name or details in the Report parameter, that those may be shared with the person responsible for + * their contact name or details in the `Report` parameter, this data may be shared with the person responsible for * the content being reported. For more information on what data in a report will be shared with whom, please see - * link:https://mod.io/report/widget[our website's report form] for more information. + * [our website's report form](https://mod.io/report). * @param Report Information about the content being reported and a description of the report. * @param Callback Callback providing a status code to indicate successful submission of the report. * @requires initialized-sdk - * @errorcategory NetworkError|Couldn't Connect to mod.io servers - * @errorcategory InvalidArgsError|Required information in the report did not pass validation - * @errorcategory InvalidArgsError|The mod ID, game ID, or user ID supplied to Report is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `InvalidArgsError`|Required information in the report did not pass validation + * @errorcategory `InvalidArgsError`|The mod ID, game ID, or user ID supplied to `Report` is invalid */ MODIO_API void ReportContentAsync(FModioReportParams Report, FOnErrorOnlyDelegateFast Callback); /** Get our image cache */ struct FModioImageCache& GetImageCache() const; - /* - @brief Archives a mod. This mod will no longer be able to be viewed or retrieved via the SDK, but it will still - exist should you choose to restore it at a later date. Archiving is restricted to team managers and administrators - only. Note that restoration and permanent deletion of a mod is possible only via web interface. - @param Mod The mod to be archived. - @param Callback Callback providing a status code indicating success or failure of archiving the mod. - @requires authenticated-user - @requires initialized-sdk - @requires no-rate-limiting - @errorcategory InsufficientPermissions|The authenticated user does not have permission to archive this mod. This - action is restricted to team managers and administrators only. - @errorcategory NetworkError|Couldn't connect to mod.io servers - @errorcategory SDKNotInitialized|SDK not initialized - @errorcategory EntityNotFoundError|Specified mod does not exist or was deleted - @errorcategory InvalidArgsError|The supplied mod ID is invalid - */ + /** + * @brief Archives a mod. This mod will no longer be able to be viewed or retrieved via the SDK, but it will still + * exist should you choose to restore it at a later date. Archiving is restricted to team managers and + * administrators only. Note that restoration and permanent deletion of a mod is possible only via web interface. + * @param Mod The mod to be archived. + * @param Callback Callback providing a status code indicating success or failure of archiving the mod. + * @requires authenticated-user + * @requires initialized-sdk + * @requires no-rate-limiting + * @errorcategory `InsufficientPermissions`|The authenticated user does not have permission to archive this mod. + * This action is restricted to team managers and administrators only. + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod does not exist or was deleted + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid + */ MODIO_API void ArchiveModAsync(FModioModID Mod, FOnErrorOnlyDelegateFast Callback); /** * @brief Forcibly uninstalls a mod from the system. This can be used when the host application requires additional * space for other mods. The current user must not be subscribed to the mod to force uninstall. To remove a mod the - * current user is subscribed to, first use xref:UnsubscribeFromModAsync[]. If the mod does not uninstall (due to a - * different user on the same system remaining subscribed), ForceUninstallModAsync can be called next. + * current user is subscribed to, first use [`UnsubscribeFromModAsync`](#unsubscribefrommodasync). If the mod does + * not uninstall (due to a different user on the same system remaining subscribed), `ForceUninstallModAsync` can be + * called next. * @param ModToRemove The mod ID to force uninstall. * @param Callback Callback indicating success or failure of the uninstallation. - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory ApiErrorRefSuccess|User is still subscribed to the specified mod - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `ApiErrorRefSuccess`|User is still subscribed to the specified mod + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid */ MODIO_API void ForceUninstallModAsync(FModioModID ModToRemove, FOnErrorOnlyDelegateFast Callback); /** * @docpublic - * @brief Mute a user. This will prevent mod.io from returning mods authored by the muted user. + * @brief Mute a user. This will prevent mod.io servers from returning mods authored by the muted user. * when performing searches. * @requires authenticated-user * @requires initialized-sdk * @param UserID ID of the User to mute * @param Callback Callback providing a status code indicating success or failure of muting the user. - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied user ID is invalid + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied user ID is invalid */ MODIO_API void MuteUserAsync(FModioUserID UserID, FOnErrorOnlyDelegateFast Callback); /* * @docpublic - * @brief Unmute a user. This will allow mod.io to mods authored by the previously muted user. - * when performing searches. + * @brief Unmute a user. This allows mod.io to display mods authored by the now unmuted user when performing + * searches. * @requires authenticated-user * @requires initialized-sdk - * @param UserID ID of the User to unmute + * @param UserID ID of the user to unmute * @param Callback Callback providing a status code indicating success or failure of unmuting the user. - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied user ID is invalid + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied user ID is invalid */ MODIO_API void UnmuteUserAsync(FModioUserID UserID, FOnErrorOnlyDelegateFast Callback); /* * @docpublic * @brief List all the users that have been muted by the current user. - * @param Callback Callback providing a status code indicating success or failure of the operation, and an Optional - * containing a list of muted users if successful. + * @param Callback Callback providing a status code indicating success or failure of the operation, and an + * `Optional` containing a list of muted users if successful. * @requires authenticated-user * @requires initialized-sdk - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user */ MODIO_API void GetMutedUsersAsync(FOnMuteUsersDelegateFast Callback); /** - * @brief Provides a list of mods that the user has submitted, or is a team member for, for the current game, + * @brief Provides a list of mods that the user has submitted or is a team member of for the current game, * applying the parameters specified in the filter. * @param Filter Filter to apply to listing the user's created mods. * @param Callback Callback invoked when the call succeeds, or when an error occurs. * @requires authenticated-user * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory RateLimited|Too many frequent calls to the API. Wait some time and try again. + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `RateLimited`|Too many frequent calls to the API. Wait some time and try again. */ MODIO_API void ListUserCreatedModsAsync(FModioFilterParams Filter, FOnListUserCreatedModsDelegateFast Callback); /** * @brief Returns the default mod installation directory for this game and platform, ignoring overrides and without * requiring the SDK to be initialized. - * @param GameID The FModioGameID of the game we're fetching the default mod installation directory for. + * @param GameID The `ModioGameID` of the game that we're fetching the default mod installation directory for. * @return The default mod installation directory for the specified game on the current platform */ static MODIO_API FString GetDefaultModInstallationDirectory(FModioGameID GameID); /** * @brief Returns the default mod installation directory for this game and platform, ignoring overrides and without - * requiring the SDK to be initialized. This overload takes an int64 for the GameID param, allowing other modules - * to execute this function via a delegate without depending on this module and the FModioGameID type. - * @param GameID An int64 representing the GameID of the game we're fetching the default mod installation directory - * for. + * requiring the SDK to be initialized. This overload takes an `int64` for the `GameID` param, allowing other + * modules to execute this function via a delegate without depending on this module and the `ModioGameID` type. + * @param GameID An `int64` representing the `GameID` of the game that we're fetching the default mod installation + * directory for. * @return The default mod installation directory for the specified game on the current platform */ static MODIO_API FString GetDefaultModInstallationDirectory(int64 GameID); /** - * @brief Install every temp mod given in the param if they are not already subbed. - * @param TArray of ModID to install as temp mod - * @return Error code indicating the status of the TempModSet. Will be empty if it was successful + * @brief Install every temp mod specified by `ModIds` if not already installed. + * @param ModIds TArray of `ModioModID`s to install as temp mods + * @return Error code indicating the status of the `TempModSet`. Will be empty if it was successful * @requires initialized-sdk - * @requires modmanagement enabled - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory ModManagementDisabled|ModManagement not enable + * @requires mod-management-enabled + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `ModManagementDisabled`|Mod management not enabled */ MODIO_API FModioErrorCode InitTempModSet(TArray ModIds); /** - * @brief Add mods to a Temp Mod Set, install every temp mod given in the param if they are not already subbed. - * @param TArray of ModID to install as temp mod - * @return Error code indicating the status of the TempModSet. Will be empty if it was successful + * @brief Add mods to a temp mod set. Every temp mod specified by `ModIds` will be installed if not already + * installed. + * @param ModIds TArray of `ModioModID`s to install as temp mods + * @return Error code indicating the status of the `TempModSet`. Will be empty if it was successful * @requires initialized-sdk - * @requires modmanagement enabled - * @requires TempModSet initialized - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory ModManagementDisabled|ModManagement not enable - * @errorcategory TempModSetNotInitialize| TempModSet not initialized + * @requires mod-management-enabled + * @requires temp-mod-set-initialized + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `ModManagementDisabled`|Mod management not enabled + * @errorcategory `TempModSetNotInitialized`|`TempModSet` not initialized */ MODIO_API FModioErrorCode AddToTempModSet(TArray ModIds); /** - * @brief Remove mods from a Temp Mod Set, uninstall every temp mod given in the param if they are not already - * subbed. - * @param TArray of ModID to install as temp mod - * @return Error code indicating the status of the TempModSet. Will be empty if it was successful + * @brief Remove mods from a temp mod set. Every temp mod specified by `ModIds` will be uninstalled unless the + * user is already subscribed. + * @param ModIds TArray of `ModioModID`s to remove as temp mods + * @return Error code indicating the status of the `TempModSet`. Will be empty if it was successful * @requires initialized-sdk - * @requires modmanagement enabled - * @requires TempModSet initialized - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory ModManagementDisabled|ModManagement not enable - * @errorcategory TempModSetNotInitialize| TempModSet not initialized + * @requires mod-management-enabled + * @requires temp-mod-set-initialized + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `ModManagementDisabled`|Mod management not enabled + * @errorcategory `TempModSetNotInitialized`|`TempModSet` not initialized */ MODIO_API FModioErrorCode RemoveFromTempModSet(TArray ModIds); /** - * @brief Uninstall every temp mod. - * @return Error code indicating the status of the TempModSet. Will be empty if it was successful + * @brief Uninstall every temp mod unless the user is subscribed. + * @return Error code indicating the status of the `TempModSet`. Will be empty if it was successful * @requires initialized-sdk - * @requires modmanagement enabled - * @requires TempModSet initialized - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory ModManagementDisabled|ModManagement not enable - * @errorcategory TempModSetNotInitialize| TempModSet not initialized + * @requires mod-management-enabled + * @requires temp-mod-set-initialized + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `ModManagementDisabled`|Mod management not enabled + * @errorcategory `TempModSetNotInitialized`|`TempModSet` not initialized */ MODIO_API FModioErrorCode CloseTempModSet(); /** - * @brief Query every System and Temp Mod in TempModSet - * @return TMap using Mod IDs as keys and ModCollectionEntry objects providing information about mods - * in TempModSet + * @brief Query every system and temp mod in `TempModSet` + * @return `TMap` providing information about mods in `TempModSet` */ MODIO_API TMap QueryTempModSet(); @@ -979,16 +999,16 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic - * @brief Start a Metrics play session - * @param Params MetricsServiceParams struct containing information of what and how to start a metrics + * @brief Start a metrics play session + * @param Params `ModioMetricsSessionParams` struct containing information of what and how to start a metrics * session * @param Callback Callback providing an error code indicating success or failure of the session start operation - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory RateLimited|Too many frequent calls to the API. Wait some time and try again. - * @errorcategory InvalidUser|No authenticated user - * @errorcategory SessionNotInitialized|Metrics session has not yet been initialized - * @errorcategory SessionIsActive|Metrics session is currently active and running - * @errorcategory BadParameter|One or more values in the Metric Session Parameters are invalid + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `RateLimited`|Too many frequent calls to the API. Wait some time and try again. + * @errorcategory `InvalidUser`|No authenticated user + * @errorcategory `SessionNotInitialized`|Metrics session has not yet been initialized + * @errorcategory `SessionIsActive`|Metrics session is currently active and running + * @errorcategory `BadParameter`|One or more values in the `ModioMetricsSessionParams` are invalid * @premiumfeature Metrics */ MODIO_API void MetricsSessionStartAsync(const FModioMetricsSessionParams& Params, @@ -999,12 +1019,11 @@ class UModioSubsystem : public UEngineSubsystem * @brief Sends a single heartbeat to the mod.io server to indicate a session is still active * @param Callback Callback providing an error code indicating success or failure of the session heartbeat * operation - * - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory InvalidUser|No authenticated user - * @errorcategory SessionNotInitialized|Metrics session has not yet been initialized - * @errorcategory SessionIsNotActive|Metrics session is not currently running. Call MetricsSessionStartAsync before - * attempting to sending a heartbeat. + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `InvalidUser`|No authenticated user + * @errorcategory `SessionNotInitialized`|Metrics session has not yet been initialized + * @errorcategory `SessionIsNotActive`|Metrics session is not currently running. Call + * [`MetricsSessionStartAsync`](#metricssessionstartasync) before attempting to sending a heartbeat. * @premiumfeature Metrics */ MODIO_API void MetricsSessionSendHeartbeatOnceAsync(FOnErrorOnlyDelegateFast Callback); @@ -1016,11 +1035,11 @@ class UModioSubsystem : public UEngineSubsystem * @param Callback Callback providing an error code indicating success or failure of the session heartbeat * operation * - * @errorcategory GenericError::SDKNotInitialized|SDK not initialized - * @errorcategory UserDataError::InvalidUser|No authenticated user - * @errorcategory MetricsError::SessionNotInitialized|Metrics session has not yet been initialized - * @errorcategory MetricsError::SessionIsNotActive|Metrics session is not currently running. - * Call MetricsSessionStartAsync before attempting to sending a heartbeat. + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `InvalidUser`|No authenticated user + * @errorcategory `SessionNotInitialized`|Metrics session has not yet been initialized + * @errorcategory `SessionIsNotActive`|Metrics session is not currently running. + * Call [`MetricsSessionStartAsync`](#metricssessionstartasync) before attempting to sending a heartbeat. * @premiumfeature Metrics */ MODIO_API void MetricsSessionSendHeartbeatAtIntervalAsync(FModioUnsigned64 IntervalSeconds, @@ -1028,15 +1047,15 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic - * @brief Ends a Metrics play session + * @brief Ends a metrics play session * @param Callback Callback providing an error code indicating success or failure of the session end operation * - * @errorcategory GenericError::SDKNotInitialized|SDK not initialized - * @errorcategory HttpError::RateLimited|Too many frequent calls to the API. Wait some time and try again. - * @errorcategory UserDataError::InvalidUser|No authenticated user - * @errorcategory MetricsError::SessionNotInitialized|Metrics session has not yet been initialized - * @errorcategory MetricsError::SessionIsNotActive|Metrics session is not currently running. - * Call MetricsSessionStartAsync before attempting to end a session. + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `RateLimited`|Too many frequent calls to the API. Wait some time and try again. + * @errorcategory `InvalidUser`|No authenticated user + * @errorcategory `SessionNotInitialized`|Metrics session has not yet been initialized + * @errorcategory `SessionIsNotActive`|Metrics session is not currently running. + * Call [`MetricsSessionStartAsync`](#metricssessionstartasync) before attempting to end a session. * @premiumfeature Metrics */ MODIO_API void MetricsSessionEndAsync(FOnErrorOnlyDelegateFast Callback); @@ -1077,11 +1096,11 @@ class UModioSubsystem : public UEngineSubsystem * @param InitializeOptions Parameters to the function packed as a struct where all members needs to be initialized * for the call to succeed * @param OnInitComplete Callback which will be invoked with the result of initialization - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory FilesystemError|Couldn't create the user data or common data folders - * @errorcategory ConfigurationError|InitializeOptions contains an invalid value - inspect ec.value() to determine - * what was incorrect - * @errorcategory SDKAlreadyInitialized|SDK already initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `FilesystemError`|Couldn't create the user data or common data folders + * @errorcategory `ConfigurationError`|InitializeOptions contains an invalid value - inspect `ec.value()` to + * determine what was incorrect + * @errorcategory `SDKAlreadyInitialized`|SDK already initialized */ UFUNCTION(BlueprintCallable, DisplayName = "InitializeAsync", Category = "mod.io") MODIO_API void K2_InitializeAsync(const FModioInitializeOptions& InitializeOptions, @@ -1096,11 +1115,11 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod does not exist or was deleted - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod does not exist or was deleted + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ UFUNCTION(BlueprintCallable, DisplayName = "SubscribeToModAsync", Category = "mod.io|Mods") MODIO_API void K2_SubscribeToModAsync(FModioModID ModToSubscribeTo, bool IncludeDependencies, @@ -1108,9 +1127,9 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Cancels any running internal operations, frees SDK resources, and invokes any pending callbacks with - * an OperationCanceled error category. This function will NOT block while the deinitialization occurs. - * @param OnShutdownComplete Callback invoked when the plugin is shut down and calling <> is no - * longer required + * an `OperationCanceled` error category. This function will NOT block while the deinitialization occurs. + * @param OnShutdownComplete Callback invoked when the plugin is shut down and calling + *[`RunPendingHandlers`](#run-pending-handlers) is no longer required **/ UFUNCTION(BlueprintCallable, DisplayName = "ShutdownAsync", Category = "mod.io") MODIO_API void K2_ShutdownAsync(FOnErrorOnlyDelegate OnShutdownComplete); @@ -1124,11 +1143,11 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod does not exist or was deleted - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod does not exist or was deleted + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ UFUNCTION(BlueprintCallable, DisplayName = "UnsubscribeFromModAsync", Category = "mod.io|Mods") MODIO_API void K2_UnsubscribeFromModAsync(FModioModID ModToUnsubscribeFrom, @@ -1145,25 +1164,32 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Retrieve a list of updates between the users local mod state, and the server-side state. This allows - * you to identify which mods will be modified by the next call to <> in order to - * perform any content management (such as unloading files) that might be required. + * you to identify which mods will be modified by the next call to + *[`FetchExternalUpdatesAsync`](#fetchexternalupdatesasync) in order to perform any content management (such as + *unloading files) that might be required. * @param OnPreviewDone Callback invoked when the external state has been retrieved. It contains a dictionary with - *ModID as keys and changes as values. Empty when there are no differences between local and the mod.io API service + * ModID as keys and change maps as values. Empty when there are no differences between local and the mod.io API + *service **/ UFUNCTION(BlueprintCallable, DisplayName = "PreviewExternalUpdatesAsync", Category = "mod.io|Mod Management") MODIO_API void K2_PreviewExternalUpdatesAsync(FOnPreviewExternalUpdatesDelegate OnPreviewDone); /** * @brief Enables the automatic management of installed mods on the system based on the user's subscriptions. - * @param Callback This callback handler will be invoked with a ModManagementEvent for each mod operation performed - * by the SDK + * @param Callback This callback handler will be invoked with a + * [`ModioModManagementEvent`](#modiomodmanagementevent) for each mod operation performed by the SDK + * @return An error code indicating success or failure of enabling mod management. Note that this is independent of + * error codes for mod management events. Inspect the `Callback` for information on each mod management event. + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `ModManagementAlreadyEnabled`|Mod management was already enabled. The mod management callback has + * not been changed. */ UFUNCTION(BlueprintCallable, DisplayName = "EnableModManagement", Category = "mod.io|Mod Management") MODIO_API FModioErrorCode K2_EnableModManagement(FOnModManagementDelegate Callback); /** * @brief Provides progress information for a mod installation or update operation if one is currently in progress. - * @return Optional ModProgressInfo object containing information regarding the progress of the installation + * @return `ModioOptionalModProgressInfo` object containing information regarding the progress of the installation * operation. */ UFUNCTION(BlueprintPure, DisplayName = "QueryCurrentModUpdate", Category = "mod.io|Mod Management") @@ -1172,48 +1198,50 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Forcibly uninstalls a mod from the system. This can be used when the host application requires additional * space for other mods. The current user must not be subscribed to the mod to force uninstall. To remove a mod the - * current user is subscribed to, first use xref:UnsubscribeFromModAsync[]. If the mod does not uninstall (due to a - * different user on the same system remaining subscribed), ForceUninstallModAsync can be called next. + * current user is subscribed to, first use [`UnsubscribeFromModAsync`](#unsubscribefrommodasync). If the mod does + * not uninstall (due to a different user on the same system remaining subscribed), `ForceUninstallModAsync` can be + * called next. * @param ModToRemove The mod ID to force uninstall. * @param Callback Callback invoked indicating success or failure of the uninstallation. - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user * @errorcategory ApiErrorRefSuccess|User is still subscribed to the specified mod - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid */ UFUNCTION(BlueprintCallable, DisplayName = "ForceUninstallModAsync", Category = "mod.io|Mod Management") MODIO_API void K2_ForceUninstallModAsync(FModioModID ModToRemove, FOnErrorOnlyDelegate Callback); /** - * @brief Fetches the currently authenticated mod.io user profile if there is one associated with the current - * platform user - * @return FModioOptionalUser object containing profile information + * @brief Fetches the currently authenticated mod.io user profile if there is one + * @return `ModioOptionalUser` object containing profile information **/ UFUNCTION(BlueprintPure, DisplayName = "QueryUserProfile", Category = "mod.io|User") MODIO_API FModioOptionalUser K2_QueryUserProfile(); /** - * @brief Provides a list of mods for the current game, that match the parameters specified in the filter - * @param Filter FModioFilterParams object containing any filters that should be applied to the query - * @param Callback Callback invoked with a status code and an optional ModInfoList providing mod profiles + * @brief Provides a list of mods for the current game that match the parameters specified in the filter + * @param Filter [`ModioFilterParams`](#modiofilterparams) object containing any filters that should be applied to + * the query + * @param Callback Callback invoked with a status code and an optional `ModioModInfoList` providing mod profiles * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized */ UFUNCTION(BlueprintCallable, DisplayName = "ListAllModsAsync", Category = "mod.io|Mods") MODIO_API void K2_ListAllModsAsync(const FModioFilterParams& Filter, FOnListAllModsDelegate Callback); /** - * @brief Provides a list of games for the current user, that match the parameters specified in the filter - * @param Filter FModioFilterParams object containing any filters that should be applied to the query - * @param Callback Callback invoked with a status code and an optional GameInfoList providing game profiles + * @brief Provides a list of games for the current user that match the parameters specified in the filter + * @param Filter [`ModioFilterParams`](#modiofilterparams) object containing any filters that should be applied to + * the query + * @param Callback Callback invoked with a status code and an optional `ModioGameInfoList` providing game profiles * @requires initialized-sdk * @requires no-rate-limiting * @requires authenticated-user - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory SDKNotInitialized|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `SDKNotInitialized`|SDK not initialized */ UFUNCTION(BlueprintCallable, DisplayName = "ListUserGamesAsync", Category = "mod.io|Mods") MODIO_API void K2_ListUserGamesAsync(const FModioFilterParams& Filter, FOnListUserGamesDelegate Callback); @@ -1221,14 +1249,14 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Fetches detailed information about the specified game * @param GameID Game ID of the game data to fetch - * @param Callback Callback providing a status code and an optional FModioGameInfo object with the game's extended + * @param Callback Callback providing a status code and an optional `ModioGameInfo` object with the game's extended * information * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory EntityNotFoundError|Specified game does not exist - * @errorcategory InvalidArgsError|The supplied game ID is invalid + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `EntityNotFoundError`|Specified game does not exist + * @errorcategory `InvalidArgsError`|The supplied game ID is invalid **/ UFUNCTION(BlueprintCallable, DisplayName = "GetGameInfoAsync", Category = "mod.io|Game") MODIO_API void K2_GetGameInfoAsync(FModioGameID GameID, FOnGetGameInfoDelegate Callback); @@ -1237,14 +1265,14 @@ class UModioSubsystem : public UEngineSubsystem * @brief Fetches detailed information about the specified mod, including description and file metadata for the * most recent release * @param ModId Mod ID of the mod to fetch data - * @param Callback Callback providing a status code and an optional FModioModInfo object with the mod's + * @param Callback Callback providing a status code and an optional `ModioModInfo` object with the mod's * extended information * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod does not exist or was deleted - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod does not exist or was deleted + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ UFUNCTION(BlueprintCallable, DisplayName = "GetModInfoAsync", Category = "mod.io|Mods") MODIO_API void K2_GetModInfoAsync(FModioModID ModId, FOnGetModInfoDelegate Callback); @@ -1257,11 +1285,11 @@ class UModioSubsystem : public UEngineSubsystem * downloaded image * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod media does not exist or was deleted - * @errorcategory InsufficientSpace|Not enough space for the file - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod media does not exist or was deleted + * @errorcategory `InsufficientSpace`|Not enough space for the file + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ UFUNCTION(BlueprintCallable, DisplayName = "GetModMediaAsync (Logo)", Category = "mod.io|Mods") MODIO_API void K2_GetModMediaLogoAsync(FModioModID ModId, EModioLogoSize LogoSize, FOnGetMediaDelegate Callback); @@ -1275,11 +1303,11 @@ class UModioSubsystem : public UEngineSubsystem * @param Callback Callback containing a status code and an Optional containing a path to the image file on disk * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod media does not exist or was deleted - * @errorcategory InsufficientSpace|Not enough space for the file - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod media does not exist or was deleted + * @errorcategory `InsufficientSpace`|Not enough space for the file + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ UFUNCTION(BlueprintCallable, DisplayName = "GetModMediaAsync (Gallery Image)", Category = "mod.io|Mods") MODIO_API void K2_GetModMediaGalleryImageAsync(FModioModID ModId, EModioGallerySize GallerySize, int32 Index, @@ -1294,11 +1322,11 @@ class UModioSubsystem : public UEngineSubsystem * downloaded image * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod media does not exist or was deleted - * @errorcategory InsufficientSpace|Not enough space for the file - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod media does not exist or was deleted + * @errorcategory `InsufficientSpace`|Not enough space for the file + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid **/ UFUNCTION(BlueprintCallable, DisplayName = "GetModMediaAsync (Avatar)", Category = "mod.io|Mods") MODIO_API void K2_GetModMediaAvatarAsync(FModioModID ModId, EModioAvatarSize AvatarSize, @@ -1306,14 +1334,14 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Fetches the available tags used on mods for the current game. These tags can them be used in conjunction - * with the FilterParams passed to ListAllMods + * with the FilterParams passed to [`ListAllModsAsync`](#listallmodsasync) * Will be cached when first received - * @param Callback Callback providing a status code and an optional ModTagOptions object containing the available - * tags + * @param Callback Callback providing a status code and an optional `ModioModTagOptions` object containing the + *available tags * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized **/ UFUNCTION(BlueprintCallable, DisplayName = "GetModTagOptionsAsync", Category = "mod.io|Mods") MODIO_API void K2_GetModTagOptionsAsync(FOnGetModTagOptionsDelegate Callback); @@ -1322,13 +1350,13 @@ class UModioSubsystem : public UEngineSubsystem * @brief For a given Mod ID, fetches a list of any mods that the creator has marked as dependencies * @param ModID The mod to retrieve dependencies for * @param Recursive Fetches dependencies recursively up to a depth of 5 - * @param Callback Callback providing a status code and an optional ModTagOptions object containing the available - * tags + * @param Callback Callback providing a status code and an optional `ModioModTagOptions` object containing the + *available tags * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid * @experimental **/ UFUNCTION(BlueprintCallable, DisplayName = "GetModDependenciesAsync", Category = "mod.io|Mods") @@ -1337,16 +1365,17 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Begins email authentication for the current session by requesting a one-time code be sent to the - * specified email address if it is associated with a mod.io account + * specified email address. * @param EmailAddress The email address to send the code to * @param Callback Callback providing a status code indicating the outcome of the request * @requires initialized-sdk * @requires no-rate-limiting * @requires no-authenticated-user - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserAlreadyAuthenticatedError|Authenticated user already signed-in. De-authenticate the current - * user with ClearUserDataAsync(), and re-initialize the SDK by calling ShutdownAsync() then InitializeAsync(). + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserAlreadyAuthenticatedError`|Current user is already authenticated. De-authenticate the current + * user with [`ClearUserDataAsync`](#clearuserdataasync), and re-initialize the SDK by calling + * [`ShutdownAsync`](#shutdownasync) then [`InitializeAsync`](#initializeasync). **/ UFUNCTION(BlueprintCallable, DisplayName = "RequestEmailAuthCodeAsync", Category = "mod.io|Authentication") MODIO_API void K2_RequestEmailAuthCodeAsync(const FModioEmailAddress& EmailAddress, FOnErrorOnlyDelegate Callback); @@ -1359,10 +1388,11 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires no-rate-limiting * @requires no-authenticated-user - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserAlreadyAuthenticatedError|Authenticated user already signed-in. De-authenticate the current - * user with ClearUserDataAsync(), and re-initialize the SDK by calling ShutdownAsync() then InitializeAsync(). + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserAlreadyAuthenticatedError`|Current user is already authenticated. De-authenticate the current + * user with [`ClearUserDataAsync`](#clearuserdataasync), and re-initialize the SDK by calling + * [`ShutdownAsync`](#shutdownasync) then [`InitializeAsync`](#initializeasync). **/ UFUNCTION(BlueprintCallable, DisplayName = "AuthenticateUserEmailAsync", Category = "mod.io|Authentication") MODIO_API void K2_AuthenticateUserEmailAsync(const FModioEmailAuthCode& AuthenticationCode, @@ -1376,10 +1406,14 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires no-rate-limiting * @requires no-authenticated-user - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserAlreadyAuthenticatedError|Authenticated user already signed-in. De-authenticate the current - * user with ClearUserDataAsync(), and re-initialize the SDK by calling ShutdownAsync() then InitializeAsync(). + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `ConfigurationError`|The SDK's configuration is not valid + * @errorcategory `InvalidArgsError`|The arguments passed to the function have failed validation + * @errorcategory `UserTermsOfUseError`|The user has not yet accepted the mod.io Terms of Use + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserAlreadyAuthenticatedError`|Current user is already authenticated. De-authenticate the current + * user with [`ClearUserDataAsync`](#clearuserdataasync), and re-initialize the SDK by calling + * [`ShutdownAsync`](#shutdownasync) followed by [`InitializeAsync`](#initializeasync). **/ UFUNCTION(BlueprintCallable, DisplayName = "AuthenticateUserExternalAsync", Category = "mod.io|Authentication") MODIO_API void K2_AuthenticateUserExternalAsync(const FModioAuthenticationParams& User, @@ -1388,16 +1422,16 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic - * @brief Queries the server to verify the state of the currently authenticated user if there is one present. An - * empty ErrorCode is passed to the callback to indicate successful verification, i.e. the mod.io server was - * contactable and the user's authentication remains valid. - * @param Callback Callback invoked with the results of the verification process + * @brief Queries the server to verify the state of the currently authenticated user if there is one present + * @param Callback Callback invoked with the results of the verification process. An empty `ModioErrorCode` + * indicates successful verification i.e. the mod.io server was contactable and the user's authentication remains + * valid. * @requires initialized-sdk * @requires no-rate-limiting * @requires authenticated-user - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user */ UFUNCTION(BlueprintCallable, DisplayName = "VerifyUserAuthenticationAsync", Category = "mod.io|Authentication") MODIO_API void K2_VerifyUserAuthenticationAsync(FOnErrorOnlyDelegate Callback); @@ -1407,8 +1441,8 @@ class UModioSubsystem : public UEngineSubsystem *player who wishes to create a mod.io account * @param Callback Callback invoked with the terms of use data once retrieved from the server * @requires initialized-sdk - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized **/ UFUNCTION(BlueprintCallable, DisplayName = "GetTermsOfUseAsync", Category = "mod.io|Authentication") MODIO_API void K2_GetTermsOfUseAsync(FOnGetTermsOfUseDelegate Callback); @@ -1438,8 +1472,8 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires no-rate-limiting * @requires authenticated-user - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user **/ UFUNCTION(BlueprintCallable, DisplayName = "ClearUserDataAsync", Category = "mod.io|User") MODIO_API void K2_ClearUserDataAsync(FOnErrorOnlyDelegate Callback); @@ -1452,9 +1486,9 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires no-rate-limiting * @requires authenticated-user - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user **/ UFUNCTION(BlueprintCallable, DisplayName = "GetUserMediaAsync (Avatar)", Category = "mod.io|User") MODIO_API void K2_GetUserMediaAvatarAsync(EModioAvatarSize AvatarSize, FOnGetMediaDelegate Callback); @@ -1469,17 +1503,17 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod does not exist or was deleted - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod does not exist or was deleted + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid */ UFUNCTION(BlueprintCallable, DisplayName = "SubmitModRatingAsync", Category = "mod.io|Mods") MODIO_API void K2_SubmitModRatingAsync(FModioModID Mod, EModioRating Rating, FOnErrorOnlyDelegate Callback); /** - * @brief Gets a new mod handle for use with SubmitNewModAsync. + * @brief Gets a new mod handle for use with [`SubmitNewModAsync`](#submitnewmodasync). * @returns New handle * @experimental */ @@ -1488,28 +1522,30 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Requests the creation of a new mod on the server with the specified parameters - * @param Handle The ModCreationHandle for this submission. Once this method invokes your callback indicating - * success, the ModCreationHandle is invalid for the rest of the session and you should request a new one for the - * next submission attempt. + * @param Handle The `ModioModCreationHandle` for this submission. Once this method invokes your callback indicating + * success, the `ModioModCreationHandle` is invalid for the rest of the session. You should request a new one for + * the next submission attempt. * @param Params Information about the new mod to create - * @param Callback Callback providing a status code and an optional FModioModID for the newly created mod + * @param Callback Callback providing a status code and an optional `ModioModID` for the newly created mod * @experimental * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory InvalidArgsError|Some fields in Params did not pass validation - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `InvalidArgsError`|Some fields in `Params` did not pass validation + * @errorcategory `UserNotAuthenticatedError`|No authenticated user */ UFUNCTION(BlueprintCallable, DisplayName = "SubmitNewModAsync", Category = "mod.io|Mods|Submission") MODIO_API void K2_SubmitNewModAsync(FModioModCreationHandle Handle, FModioCreateModParams Params, FOnSubmitNewModDelegate Callback); /** - * @brief Queues the upload of a new mod file release for the specified mod, using the submitted parameters. The - * upload's progress can be tracked in the same way as downloads; when completed, a Mod Management Event will be - * triggered with the result code for the upload. + * @brief Queues the upload of a new modfile release for the specified mod using the submitted parameters. This + * function takes an `ModioCreateModFileParams` object to specify the path to the root folder of the new modfile. + * The plugin will compress the folder's contents into a .zip archive and queue the result for upload. When the + * upload completes, a mod management event will be triggered. Note the plugin is also responsible for decompressing + * the archive upon its installation at a later point in time. * @param Mod The ID of the mod you are submitting a file for * @param Params Information about the mod file being created, including the root path of the directory that will * be archived @@ -1517,27 +1553,27 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid */ UFUNCTION(BlueprintCallable, DisplayName = "SubmitNewModFileForMod", Category = "mod.io|Mods|Submission") MODIO_API void K2_SubmitNewModFileForMod(FModioModID Mod, FModioCreateModFileParams Params); /** - * @brief Edits the parameters of a mod, by updating any fields set in the Params object to match the passed-in - * values. Fields left empty on the Params object will not be updated. + * @brief Edits the parameters of a mod by updating any fields set in the `Params` object to match the passed-in + * values. Fields left empty on the `Params` object will not be updated. * @param Mod The ID of the mod you wish to edit * @param Params Descriptor containing the fields that should be altered. - * @param Callback The callback invoked when the changes have been submitted, containing an optional updated - * ModInfo object if the edits were performed successfully + * @param Callback The callback invoked when the changes have been submitted containing an optional updated + * `ModioModInfo` object if the edits were performed successfully * @requires initialized-sdk * @requires authenticated-user * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory InvalidArgsError|Some fields in Params did not pass validation - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `InvalidArgsError`|Some fields in `Params` did not pass validation + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid */ UFUNCTION(BlueprintCallable, DisplayName = "SubmitModChangesAsync", Category = "mod.io|Mods|Editing") MODIO_API void K2_SubmitModChangesAsync(FModioModID Mod, FModioEditModParams Params, @@ -1545,20 +1581,20 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Sends a content report to mod.io. When using this function, please inform your users that if they provide - * their contact name or details in the Report parameter, that those may be shared with the person responsible for + * their contact name or details in the `Report` parameter, this data may be shared with the person responsible for * the content being reported. For more information on what data in a report will be shared with whom, please see - * link:https://mod.io/report/widget[our website's report form] for more information. + * [our website's report form](https://mod.io/report). * @param Report Information about the content being reported and a description of the report. * @param Callback Callback providing a status code to indicate successful submission of the report. * @requires initialized-sdk - * @errorcategory NetworkError|Couldn't Connect to mod.io servers - * @errorcategory InvalidArgsError|Required information in the report did not pass validation - * @errorcategory InvalidArgsError|The mod ID, game ID, or user ID supplied to Report is invalid + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `InvalidArgsError`|Required information in the report did not pass validation + * @errorcategory `InvalidArgsError`|The mod ID, game ID, or user ID supplied to `Report` is invalid */ UFUNCTION(BlueprintCallable, DisplayName = "ReportContentAsync", Category = "mod.io") MODIO_API void K2_ReportContentAsync(FModioReportParams Report, FOnErrorOnlyDelegate Callback); - /* + /** * @brief Archives a mod. This mod will no longer be able to be viewed or retrieved via the SDK, but it will still * exist should you choose to restore it at a later date. Archiving is restricted to team managers and * administrators only. Note that restoration and permanent deletion of a mod is possible only via web interface. @@ -1567,12 +1603,12 @@ class UModioSubsystem : public UEngineSubsystem * @requires authenticated-user * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory InsufficientPermissions|The authenticated user does not have permission to archive this mod. This - * action is restricted to team managers and administrators only. - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory EntityNotFoundError|Specified mod does not exist or was deleted - * @errorcategory InvalidArgsError|The supplied mod ID is invalid + * @errorcategory `InsufficientPermissions`|The authenticated user does not have permission to archive this mod. + * This action is restricted to team managers and administrators only. + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `EntityNotFoundError`|Specified mod does not exist or was deleted + * @errorcategory `InvalidArgsError`|The supplied mod ID is invalid */ UFUNCTION(BlueprintCallable, DisplayName = "ArchiveModAsync", Category = "mod.io|Mods") MODIO_API void K2_ArchiveModAsync(FModioModID Mod, FOnErrorOnlyDelegate Callback); @@ -1585,24 +1621,24 @@ class UModioSubsystem : public UEngineSubsystem * @requires initialized-sdk * @param UserID ID of the User to mute * @param Callback Callback providing a status code indicating success or failure of muting the user. - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied user ID is invalid + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied user ID is invalid */ UFUNCTION(BlueprintCallable, DisplayName = "MuteUserAsync", Category = "mod.io|User") MODIO_API void K2_MuteUserAsync(FModioUserID UserID, FOnErrorOnlyDelegate Callback); /** * @docpublic - * @brief Unmute a user. This will allow mod.io to mods authored by the previously muted user. - * when performing searches. + * @brief Unmute a user. This allows mod.io to display mods authored by the now unmuted user when performing + * searches. * @requires authenticated-user * @requires initialized-sdk - * @param UserID ID of the User to unmute + * @param UserID ID of the user to unmute * @param Callback Callback providing a status code indicating success or failure of unmuting the user. - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user - * @errorcategory InvalidArgsError|The supplied user ID is invalid + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user + * @errorcategory `InvalidArgsError`|The supplied user ID is invalid */ UFUNCTION(BlueprintCallable, DisplayName = "UnmuteUserAsync", Category = "mod.io|User") MODIO_API void K2_UnmuteUserAsync(FModioUserID UserID, FOnErrorOnlyDelegate Callback); @@ -1610,27 +1646,27 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic * @brief List all the users that have been muted by the current user. - * @param Callback Callback providing a status code indicating success or failure of the operation, and an Optional + * @param Callback Callback providing a status code indicating success or failure of the operation, and an optional * containing a list of muted users if successful. * @requires authenticated-user * @requires initialized-sdk - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory UserNotAuthenticatedError|No authenticated user + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `UserNotAuthenticatedError`|No authenticated user */ UFUNCTION(BlueprintCallable, DisplayName = "GetMutedUsersAsync", Category = "mod.io|User") MODIO_API void K2_GetMutedUsersAsync(FOnMuteUsersDelegate Callback); /** - * @brief Provides a list of mods that the user has submitted, or is a team member for, for the current game, + * @brief Provides a list of mods that the user has submitted or is a team member of for the current game, * applying the parameters specified in the filter. - * @param Filter Filter to apply to listing the user's created mods. + * @param Filter Filter to apply when listing the user's created mods. * @param Callback Callback invoked when the call succeeds, or when an error occurs. * @requires authenticated-user * @requires initialized-sdk * @requires no-rate-limiting - * @errorcategory NetworkError|Couldn't connect to mod.io servers - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory RateLimited|Too many frequent calls to the API. Wait some time and try again. + * @errorcategory `NetworkError`|Couldn't connect to mod.io servers + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `RateLimited`|Too many frequent calls to the API. Wait some time and try again. */ UFUNCTION(BlueprintCallable, DisplayName = "ListUserCreatedModsAsync", Category = "mod.io|Mods") MODIO_API void K2_ListUserCreatedModsAsync(const FModioFilterParams& Filter, @@ -1639,70 +1675,71 @@ class UModioSubsystem : public UEngineSubsystem /** * @brief Returns the default mod installation directory for this game and platform, ignoring overrides and without * requiring the SDK to be initialized. - * @param GameID The FModioGameID of the game we're fetching the default mod installation directory for. + * @param GameID The `ModioGameID` of the game we're fetching the default mod installation directory for. * @return The default mod installation directory for the specified game on the current platform */ UFUNCTION(BlueprintCallable, DisplayName = "GetDefaultModInstallationDirectory", Category = "mod.io|Mods") static MODIO_API FString K2_GetDefaultModInstallationDirectory(FModioGameID GameID); /** - * @brief Install every temp mod given in the param if they are not already subbed. - * @param TArray of ModID to install as temp mod - * @return Error code indicating the status of the TempModSet. Will be empty if it was successful + * @brief Install every temp mod specified by `ModIds` if not already installed. + * @param ModIds TArray of `ModioModID`s to install as temp mods + * @return Error code indicating the status of the `TempModSet`. Will be empty if it was successful * @requires initialized-sdk - * @requires modmanagement enabled - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory ModManagementDisabled|ModManagement not enable + * @requires mod-management-enabled + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `ModManagementDisabled`|Mod management not enabled */ UFUNCTION(BlueprintCallable, DisplayName = "InitTempModSet", Category = "mod.io|Mods") MODIO_API FModioErrorCode K2_InitTempModSet(TArray ModIds); /** - * @brief Add mods to a Temp Mod Set, install every temp mod given in the param if they are not already subbed. - * @param TArray of ModID to install as temp mod - * @return Error code indicating the status of the TempModSet. Will be empty if it was successful + * @brief Add mods to a Temp Mod Set. Every temp mod specified by `ModIds` will be installed if not already + * installed. + * @param ModIds TArray of `ModioModID`s to install as temp mods + * @return Error code indicating the status of the `TempModSet`. Will be empty if it was successful * @requires initialized-sdk - * @requires modmanagement enabled - * @requires TempModSet initialized - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory ModManagementDisabled|ModManagement not enable - * @errorcategory TempModSetNotInitialize| TempModSet not initialized + * @requires mod-management-enabled + * @requires temp-mod-set-initialized + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `ModManagementDisabled`|Mod management not enabled + * @errorcategory `TempModSetNotInitialized`|`TempModSet` not initialized */ UFUNCTION(BlueprintCallable, DisplayName = "AddToTempModSet", Category = "mod.io|Mods") MODIO_API FModioErrorCode K2_AddToTempModSet(TArray ModIds); /** - * @brief Remove mods from a Temp Mod Set, uninstall every temp mod given in the param if they are not already - * subbed. - * @param TArray of ModID to install as temp mod - * @return Error code indicating the status of the TempModSet. Will be empty if it was successful + * @brief Remove mods from a temp mod set. Every temp mod specified by `ModIds` will be uninstalled unless the + * user is already subscribed. + * @param ModIds TArray of `ModioModID`s to remove as temp mods + * @return Error code indicating the status of the `TempModSet`. Will be empty if it was successful * @requires initialized-sdk - * @requires modmanagement enabled - * @requires TempModSet initialized - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory ModManagementDisabled|ModManagement not enable - * @errorcategory TempModSetNotInitialize| TempModSet not initialized + * @requires mod-management-enabled + * @requires temp-mod-set-initialized + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `ModManagementDisabled`|Mod management not enabled + * @errorcategory `TempModSetNotInitialized`|`TempModSet` not initialized */ UFUNCTION(BlueprintCallable, DisplayName = "RemoveFromTempModSet", Category = "mod.io|Mods") MODIO_API FModioErrorCode K2_RemoveFromTempModSet(TArray ModIds); /** - * @brief Uninstall every temp mod. - * @return Error code indicating the status of the TempModSet. Will be empty if it was successful + * @brief Uninstall every temp mod unless the user is subscribed. + * @return Error code indicating the status of the `TempModSet`. Will be empty if it was successful * @requires initialized-sdk - * @requires modmanagement enabled - * @requires TempModSet initialized - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory ModManagementDisabled|ModManagement not enable - * @errorcategory TempModSetNotInitialize| TempModSet not initialized + * @requires mod-management-enabled + * @requires temp-mod-set-initialized + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `ModManagementDisabled`|Mod management not enabled + * @errorcategory `TempModSetNotInitialized`|`TempModSet` not initialized */ UFUNCTION(BlueprintCallable, DisplayName = "CloseTempModSet", Category = "mod.io|Mods") MODIO_API FModioErrorCode K2_CloseTempModSet(); /** - * @brief Query every System and Temp Mod in TempModSet - * @return TMap using Mod IDs as keys and ModCollectionEntry objects providing information about mods - * in TempModSet + * @brief Query every system and temp mod in `TempModSet` + * @return TMap using `ModioModID` as keys and `ModioModCollectionEntry` objects providing information about mods + * in `TempModSet` */ UFUNCTION(BlueprintCallable, DisplayName = "QueryTempModSet", Category = "mod.io|Mods") MODIO_API TMap K2_QueryTempModSet(); @@ -1711,9 +1748,9 @@ class UModioSubsystem : public UEngineSubsystem * @docpublic * @brief Purchases a mod for the current player * @param ModID ID of the mod to purchase - * @param ExpectedPrice The price the user is expected to pay for the mod, generally ModInfo.Price. This ensures - *that there is consistency between the displayed price and the price in the backend. If there is a mismatch, the - *purchase will fail. + * @param ExpectedPrice The price the user is expected to pay for the mod, generally + *[`ModioModInfo.Price`](#modiomodinfo). This ensures that there is consistency between the displayed price and the + *price in the backend. If there is a mismatch, the purchase will fail. * @param Callback Callback invoked with purchase information once the purchase is completed. * @requires initialized-sdk * @requires authenticated-user @@ -1725,7 +1762,7 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic - * @brief Get a User Delegation Token that can be used for S2S service calls + * @brief Get a user delegation token that can be used for S2S service calls * @param Callback Callback invoked with purchase information once the purchase is completed. * @requires initialized-sdk * @requires authenticated-user @@ -1737,7 +1774,7 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic * @brief Gets the users current wallet balance. This will also create a wallet for a user if one does not exist. - * You should ensure this is called prior to calling PurchaseModAsync + * You should ensure this is called prior to calling [`PurchaseModAsync`](#purchasemodasync) * purchase will fail. * @param Callback Callback invoked with the users wallet balance * @requires initialized-sdk @@ -1750,7 +1787,7 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic * @brief Fetches the user's purchases. This populates a runtime cache of purchase information - * that can be accessed using QueryUserPurchasedMods. + * that can be accessed using [`QueryUserPurchasedMods`](#query-user-purchased-mods). * @param Callback Callback invoked once the call has been completed. * @requires initialized-sdk * @requires authenticated-user @@ -1775,16 +1812,16 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic - * @brief Start a Metrics play session - * @param Params MetricsServiceParams struct containing information of what and how to start a metrics + * @brief Start a metrics play session + * @param Params `ModioMetricsSessionParams` struct containing information of what and how to start a metrics * session * @param Callback Callback providing an error code indicating success or failure of the session start operation - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory RateLimited|Too many frequent calls to the API. Wait some time and try again. - * @errorcategory InvalidUser|No authenticated user - * @errorcategory SessionNotInitialized|Metrics session has not yet been initialized - * @errorcategory SessionIsActive|Metrics session is currently active and running - * @errorcategory BadParameter|One or more values in the Metric Session Parameters are invalid + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `RateLimited`|Too many frequent calls to the API. Wait some time and try again. + * @errorcategory `InvalidUser`|No authenticated user + * @errorcategory `SessionNotInitialized`|Metrics session has not yet been initialized + * @errorcategory `SessionIsActive`|Metrics session is currently active and running + * @errorcategory `BadParameter`|One or more values in the Metric Session Parameters are invalid * @premiumfeature Metrics */ UFUNCTION(BlueprintCallable, DisplayName = "MetricsSessionStartAsync", Category = "mod.io|Metrics") @@ -1796,11 +1833,11 @@ class UModioSubsystem : public UEngineSubsystem * @param Callback Callback providing an error code indicating success or failure of the session heartbeat * operation * - * @errorcategory SDKNotInitialized|SDK not initialized - * @errorcategory InvalidUser|No authenticated user - * @errorcategory SessionNotInitialized|Metrics session has not yet been initialized - * @errorcategory SessionIsNotActive|Metrics session is not currently running. Call MetricsSessionStartAsync before - * attempting to sending a heartbeat. + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `InvalidUser`|No authenticated user + * @errorcategory `SessionNotInitialized`|Metrics session has not yet been initialized + * @errorcategory `SessionIsNotActive`|Metrics session is not currently running. Call + * [`MetricsSessionStartAsync`](#metricssessionstartasync) before attempting to sending a heartbeat. * @premiumfeature Metrics */ UFUNCTION(BlueprintCallable, DisplayName = "MetricsSessionSendHeartbeatOnceAsync", Category = "mod.io|Metrics") @@ -1813,12 +1850,12 @@ class UModioSubsystem : public UEngineSubsystem * @param Callback Callback providing an error code indicating success or failure of the session heartbeat * operation * - * @errorcategory GenericError::SDKNotInitialized|SDK not initialized - * @errorcategory UserDataError::InvalidUser|No authenticated user - * @errorcategory MetricsError::SessionNotInitialized|Metrics session has not yet been initialized - * @errorcategory MetricsError::SessionIsNotActive|Metrics session is not currently running. - * Call MetricsSessionStartAsync before attempting to sending a heartbeat. - * @premiumfeature Metrics + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `InvalidUser`|No authenticated user + * @errorcategory `SessionNotInitialized`|Metrics session has not yet been initialized + * @errorcategory `SessionIsNotActive`|Metrics session is not currently running. + * Call [`MetricsSessionStartAsync`](#metricssessionstartasync) before attempting to sending a heartbeat. + * @olden Metrics */ UFUNCTION(BlueprintCallable, DisplayName = "MetricsSessionSendHeartbeatAtIntervalAsync", Category = "mod.io|Metrics") @@ -1827,15 +1864,15 @@ class UModioSubsystem : public UEngineSubsystem /** * @docpublic - * @brief Ends a Metrics play session + * @brief Ends a metrics play session * @param Callback Callback providing an error code indicating success or failure of the session end operation * - * @errorcategory GenericError::SDKNotInitialized|SDK not initialized - * @errorcategory HttpError::RateLimited|Too many frequent calls to the API. Wait some time and try again. - * @errorcategory UserDataError::InvalidUser|No authenticated user - * @errorcategory MetricsError::SessionNotInitialized|Metrics session has not yet been initialized - * @errorcategory MetricsError::SessionIsNotActive|Metrics session is not currently running. - * Call MetricsSessionStartAsync before attempting to end a session. + * @errorcategory `SDKNotInitialized`|SDK not initialized + * @errorcategory `RateLimited`|Too many frequent calls to the API. Wait some time and try again. + * @errorcategory `InvalidUser`|No authenticated user + * @errorcategory `SessionNotInitialized`|Metrics session has not yet been initialized + * @errorcategory `SessionIsNotActive`|Metrics session is not currently running. + * Call [`MetricsSessionStartAsync`](#metricssessionstartasync) before attempting to end a session. * @premiumfeature Metrics */ UFUNCTION(BlueprintCallable, DisplayName = "MetricsSessionEndAsync", Category = "mod.io|Metrics") diff --git a/Source/Modio/Public/Types/ModioCommonTypes.h b/Source/Modio/Public/Types/ModioCommonTypes.h index 2ce4705c..1c695011 100644 --- a/Source/Modio/Public/Types/ModioCommonTypes.h +++ b/Source/Modio/Public/Types/ModioCommonTypes.h @@ -27,21 +27,20 @@ namespace Modio } // namespace Modio /** - * Enum representing what environment the game is deployed in, between - * test or a live environment + * @brief Enum representing which environment the game is deployed to: `Test` or `Live`. **/ UENUM(BlueprintType) enum class EModioEnvironment : uint8 { - /** Test/Private environment **/ + /** Test (private) environment */ Test, - /** Live/Public environment **/ + /** Live (public) environment */ Live }; /** - * Enum representing the store or service your game is being distributed through + * @brief Enum representing the store or service your game is being distributed through **/ UENUM(BlueprintType) enum class EModioPortal : uint8 @@ -59,7 +58,7 @@ enum class EModioPortal : uint8 }; /** - * Enum representing a named platform that the plugin is running on. + * @brief Enum representing a named platform that the plugin is running on. **/ UENUM(BlueprintType) enum class EModioPlatformName : uint8 @@ -78,7 +77,7 @@ enum class EModioPlatformName : uint8 }; /** - * Enum representing the platform(s) that a modfile is enabled for + * @brief Enum representing the platform(s) that a modfile is enabled for **/ UENUM(BlueprintType) enum class EModioModfilePlatform : uint8 @@ -103,16 +102,13 @@ enum class EModioModfilePlatform : uint8 UENUM(BlueprintType) enum class EModioLogoSize : uint8 { - /** 320x180px **/ + /** 320x180px */ Thumb320 = 0, - - /** 640x360px **/ + /** 640x360px */ Thumb640 = 1, - - /** 1280x720px **/ + /** 1280x720px */ Thumb1280 = 2, - - /** Original Size **/ + /** Original Size */ Original = 3 }; @@ -122,13 +118,11 @@ enum class EModioLogoSize : uint8 UENUM(BlueprintType) enum class EModioAvatarSize : uint8 { - /** Original Size **/ + /** Original Size */ Original, - - /** 50x50px Thumbnail **/ + /** 50x50px Thumbnail */ Thumb50, - - /** 100x100px Thumbnail **/ + /** 100x100px Thumbnail */ Thumb100 }; @@ -138,13 +132,13 @@ enum class EModioAvatarSize : uint8 UENUM(BlueprintType) enum class EModioGallerySize : uint8 { - /** Original Size **/ + /** Original Size */ Original, - /** 320x180px Thumbnail **/ + /** 320x180px Thumbnail */ Thumb320, - /** 1280x720 Thumbnail **/ + /** 1280x720 Thumbnail */ Thumb1280 }; @@ -154,19 +148,19 @@ enum class EModioGallerySize : uint8 UENUM(BlueprintType) enum class EModioLogLevel : uint8 { - /** Detailed low-level debugging output. Not intended for general use **/ + /** Detailed low-level debugging output. Not intended for general use */ Trace = 0, /* Detailed but not low-level. Generally useful for some mid-level information for debugging. */ Detailed = 1, - /** Informational output containing status messages **/ + /** Informational output containing status messages */ Info = 2, - /** Warnings about incorrect plugin usage, timeouts **/ + /** Warnings about incorrect plugin usage, timeouts */ Warning = 3, - /** Only errors **/ + /** Only errors */ Error = 4 }; @@ -201,9 +195,12 @@ ENUM_RANGE_BY_COUNT(EModioLanguage, EModioLanguage::Count); UENUM(BlueprintType) enum class EModioModChangeType : uint8 { - Added, // The user's list has a new mod to synchronize - Removed, // The user's list must remove a mod to synchronize - Updated // The user's list must update a mod to synchronize + // The user's list has a new mod to synchronize + Added, + // The user's list must remove a mod to synchronize + Removed, + // The user's list must update a mod to synchronize + Updated }; /** @@ -270,13 +267,16 @@ struct MODIO_API FModioModID **/ FString ToString() const { - if (ModID < 0) - { - return TEXT("InvalidModID"); - } return FString::Printf(TEXT("%lld"), ModID); } + /// @docinternal + /// @brief Compare the ModID to the invalid state + bool IsValid() const + { + return ModID != INDEX_NONE; + } + /** * Stream forward operator to pass the ModID along * @param Ar The archive class that receives information @@ -387,7 +387,7 @@ struct MODIO_API FModioGameID /** * Transform a GameID into its 32 bit integer representation - * @param ModGameId String type for the GameID to read its hash from + * @param ModioGameId String type for the GameID to read its hash from * @return unsigned 32 bit integer that matches the hash of the GameID provided **/ MODIO_API friend uint32 GetTypeHash(FModioGameID ModioGameId); @@ -406,13 +406,16 @@ struct MODIO_API FModioGameID **/ FString ToString() const { - if (GameId < 0) - { - return TEXT("InvalidGameID"); - } return FString::Printf(TEXT("%lld"), GameId); } + /// @docinternal + /// @brief Compare the GameID to the invalid state defined by the SDK + bool IsValid() const + { + return GameId != InvalidGameID().GameId; + } + /** * An always invalid GameID, helpful to compare against other GameIDs * @return String value of the stored GameID @@ -513,13 +516,16 @@ struct MODIO_API FModioFileMetadataID **/ FString ToString() const { - if (FileMetadataID < 0) - { - return TEXT("InvalidFileMetadataID"); - } return FString::Printf(TEXT("%lld"), FileMetadataID); } + /// @docinternal + /// @brief Compare the FileMetadataID to the invalid state + bool IsValid() const + { + return FileMetadataID != INDEX_NONE; + } + /** * Stream forward operator to pass the FileMetadataID along * @param Ar The archive class that receives information @@ -612,13 +618,16 @@ struct MODIO_API FModioUserID **/ FString ToString() const { - if (UserID < 0) - { - return TEXT("InvalidUserID"); - } return FString::Printf(TEXT("%lld"), UserID); } + /// @docinternal + /// @brief Compare the UserID to the invalid state + bool IsValid() const + { + return UserID != INDEX_NONE; + } + /** * Stream forward operator to pass the UserID along * @param Ar The archive class that receives information @@ -696,16 +705,16 @@ struct MODIO_API FModioApiKey **/ const FString& ToString() const { - // Put in the function instead of default constructor to avoid having to allocate memory for - // each empty instance - if (ApiKey.Len() == 0) - { - static FString Invalid(TEXT("InvalidApiKey")); - return Invalid; - } return ApiKey; } + /// @docinternal + /// @brief Compare the ApiKey to the invalid state defined by the SDK + bool IsValid() const + { + return ApiKey != InvalidAPIKey().ToString(); + } + /** * An always invalid APIKey, helpful to compare against other APIKeys * @return String value of the stored APIKey @@ -750,18 +759,11 @@ struct MODIO_API FModioGuid **/ const FString& ToString() const { - // Put in the function instead of default constructor to avoid having to allocate memory for - // each empty instance - if (InternalGuid.Len() == 0) - { - static FString Invalid(TEXT("InvalidGuid")); - return Invalid; - } return InternalGuid; } /// @docinternal - /// @brief Compare the InternalGuid to the invalid state define by the SDK + /// @brief Compare the InternalGuid to the invalid state defined by the SDK bool IsValid() const { return InternalGuid != InvalidGuid().InternalGuid; @@ -818,16 +820,16 @@ struct MODIO_API FModioEmailAddress **/ const FString& ToString() const { - // Put in the function instead of default constructor to avoid having to allocate memory for - // each empty instance - if (EmailAddress.Len() == 0) - { - static FString Invalid(TEXT("InvalidEmailAddress")); - return Invalid; - } return EmailAddress; } + /// @docinternal + /// @brief Compare the EmailAddress to the invalid state + bool IsValid() const + { + return EmailAddress.Len() > 0; + } + private: FString EmailAddress; }; @@ -860,6 +862,13 @@ struct MODIO_API FModioEmailAuthCode return EmailAuthCode; } + /// @docinternal + /// @brief Compare the EmailAuthCode to the invalid state + bool IsValid() const + { + return EmailAuthCode.Len() > 0; + } + private: FString EmailAuthCode; }; @@ -937,18 +946,114 @@ struct MODIO_API FModioMetricsSessionParams UENUM(BlueprintType) enum EFileSizeUnit { - /** Will take the largest one that becomes a number larger than 1 (i.e, 1300mb becomes 1.3gb) **/ + /** Will take the largest one that becomes a number larger than 1 (i.e, 1300mb becomes 1.3gb) */ Largest = 0, - - /** A single byte **/ + /** A single byte */ B = 1, - - /** Kilo bytes **/ + /** Kilobytes */ KB = 1024, - - /** Mega bytes **/ + /** Megabytes */ MB = 1024 * 1024, - - /** Giga bytes **/ + /** Gigabytes */ GB = 1024 * 1024 * 1024 -}; \ No newline at end of file +}; + +USTRUCT(BlueprintType) +struct MODIO_API FModioTokenPackID +{ + GENERATED_BODY() + + /** + * Default constructor without parameters + **/ + FModioTokenPackID(); + + /** + * Preferred constructor with Token Pack initialization parameter + * @param InTokenPAckId Base Token Pack ID to create this strong type + **/ + FModioTokenPackID(FString InTokenPackId) + { + TokenPackID = InTokenPackId; + } + + /** + * Transform a TokenPackID into its 32 bit integer representation + * @param ModioTokenPackId String type for the TokenPackID to read its hash from + * @return unsigned 32 bit integer that matches the hash of the TokenPackID provided + **/ + MODIO_API friend uint32 GetTypeHash(FModioTokenPackID ModioTokenPackId); + + /** + * Comparison operator between TokenPackID elements + **/ + MODIO_API friend bool operator==(FModioTokenPackID A, FModioTokenPackID B) + { + return A.TokenPackID == B.TokenPackID; + } + + /** + * Comparison operator between TokenPackID elements + **/ + MODIO_API friend bool operator!=(FModioTokenPackID A, FModioTokenPackID B) + { + return A.TokenPackID != B.TokenPackID; + } + + /** + * Transform a TokenPackID into its string representation + * @return String value of the stored TokenPackID + **/ + FString ToString() const + { + return TokenPackID; + } + + /** + * Stream forward operator to pass the TokenPackID along + * @param Ar The archive class that receives information + * @param ID The TokenPackID to pass along this operator + * @return FArchive The updated archive with the TokenPackID passed along + **/ + MODIO_API friend FArchive& operator<<(FArchive& Ar, FModioTokenPackID& ID) + { + return Ar << ID.TokenPackID; + } + + /** + * Store this instance TokenPackID into an archive + * @param Ar The archive class that receives information + * @return Always true when the TokenPackID is forwarded to Ar + **/ + bool Serialize(FArchive& Ar) + { + Ar << *this; + return true; + } + + /** + * Store this instance TokenPackID into an archive with reference flag as parameter + * @param Ar The archive class that receives information + * @param Map A dictionary from indices for network communication + * @param bOutSuccess Flag to signal the result of this operation, True when stored + * @return Always true when the ModID is forwarded to Ar + **/ + bool NetSerialize(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess) + { + Ar << *this; + bOutSuccess = true; + return true; + } + + private: + /// @brief Function for retrieving the underlying value of an FModioTokenPackID for use in custom serialization. Not + /// recommended for any other use. FModioTokenPackIDs should be treated as opaque. + /// @param In the FModioTokenPackID to retrieve the value for + /// @return the underlying string ID. + MODIO_API friend FString GetUnderlyingValue(const FModioTokenPackID& In) + { + return In.TokenPackID; + } + + FString TokenPackID; +}; diff --git a/Source/Modio/Public/Types/ModioErrorCode.h b/Source/Modio/Public/Types/ModioErrorCode.h index ca16a698..cfa5c00a 100644 --- a/Source/Modio/Public/Types/ModioErrorCode.h +++ b/Source/Modio/Public/Types/ModioErrorCode.h @@ -20,7 +20,7 @@ namespace Modio class ErrorCode; } -/** @brief wrapper around Modio::ErrorCode */ +/** @brief Wrapper around `Modio::ErrorCode` */ USTRUCT(BlueprintType) struct MODIO_API FModioErrorCode { diff --git a/Source/Modio/Public/Types/ModioFilterParams.h b/Source/Modio/Public/Types/ModioFilterParams.h index dc114b4e..c8c3ee8f 100644 --- a/Source/Modio/Public/Types/ModioFilterParams.h +++ b/Source/Modio/Public/Types/ModioFilterParams.h @@ -27,14 +27,22 @@ namespace Modio UENUM(BlueprintType) enum class EModioSortFieldType : uint8 { - ID, /** use mod ID (default) */ - DownloadsToday, /** use number of downloads in last 24 (exposed in REST API as 'popular' */ - SubscriberCount, /** use number of subscribers */ - Rating, /** use mod rating */ - DateMarkedLive, /** use date mod was marked live */ - DateUpdated, /** use date mod was last updated */ - DownloadsTotal, /** use downloads total */ - Alphabetical /** use mod name */ + /** Use mod ID (default) */ + ID, + /** Use number of downloads in last 24 (exposed in REST API as "popular") */ + DownloadsToday, + /** Use number of subscribers */ + SubscriberCount, + /** Use mod rating */ + Rating, + /** Use date mod was marked live */ + DateMarkedLive, + /** Use date mod was last updated */ + DateUpdated, + /** Use downloads total */ + DownloadsTotal, + /** Use mod name */ + Alphabetical }; /// @brief Enum indicating which direction sorting should be applied @@ -49,18 +57,22 @@ enum class EModioSortDirection : uint8 UENUM(BlueprintType) enum class EModioRevenueFilterType : uint8 { - Free = 0, /** Return only free mods */ - Paid = 1, /** Return only paid mods */ - FreeAndPaid = 2 /** Return both free and paid mods */ + /** Return only free mods */ + Free = 0, + /** Return only paid mods */ + Paid = 1, + /** Return both free and paid mods */ + FreeAndPaid = 2 }; -/** @brief Class storing a set of filter parameters for use in xref:ListAllModsAsync[] */ +/** @brief Class storing a set of filter parameters for use in [`ListAllModsAsync`](#listallmodsasync) */ USTRUCT(BlueprintType) struct MODIO_API FModioFilterParams { GENERATED_BODY() /** + * @docpublic * @brief Only include mods with the specified author User ID * @param UserID The User ID to filter on * @return *this @@ -68,6 +80,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& MatchingAuthor(const FModioUserID& UserID); /** + * @docpublic * @brief Only include mods with the specified author User IDs * @param UserIDs The list of User IDs to filter on * @return *this @@ -75,6 +88,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& MatchingAuthors(const TArray& UserIDs); /** + * @docpublic * @brief Indicates the filter should only include the specified mods * @param IDs the set of mods to match * @return *this @@ -82,6 +96,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& MatchingIDs(const TArray& IDs); /** + * @docpublic * @brief Indicates the filter should exclude the specified mods. * @param IDs the set of mods to exclude * @return *this @@ -89,6 +104,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& ExcludingIDs(const TArray& IDs); /** + * @docpublic * @brief Indicates results should be sorted using the specified field and direction * @param ByField Field to sort with * @param ByDirection Direction to sort @@ -97,6 +113,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& SortBy(EModioSortFieldType ByField, EModioSortDirection ByDirection); /** + * @docpublic * @brief Only include mods where the name contains the provided string * @param SearchString Search string * @return *this @@ -104,16 +121,16 @@ struct MODIO_API FModioFilterParams FModioFilterParams& NameContains(const FString& SearchString); /** + * @docpublic * @brief Only include mods where the name contains at least one of the provided strings (string1 OR string2 OR - *stringN...) - * @tparam ...Args std::string + * stringN...) * @param SearchString First search string - * @param ...args Additional search strings * @return *this **/ FModioFilterParams& NameContains(const TArray& SearchString); /** + * @docpublic * @brief Only include mods that were marked live (i.e released) after the specified date * @param LiveAfter Minimum date * @return *this @@ -121,6 +138,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& MarkedLiveAfter(FDateTime LiveAfter); /** + * @docpublic * @brief Only include mods that were marked live (i.e released) before the specified date * @param LiveBefore Maximum date * @return *this @@ -128,6 +146,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& MarkedLiveBefore(FDateTime LiveBefore); /** + * @docpublic * @brief Only include mods with a metadata blob containing the specified substring * @param SearchString The substring to search for * @return *this @@ -135,6 +154,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& MetadataLike(FString SearchString); /** + * @docpublic * @brief Only include mods that have the specified tag * @param Tag Tag to include * @return *this @@ -142,6 +162,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& WithTags(const FString& Tag); /** + * @docpublic * @brief Only include mods that have all the specified tags (tag1 AND tag2 AND tagN...) * @param NewTags The set of tags to filter on * @return *this @@ -149,6 +170,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& WithTags(const TArray& NewTags); /** + * @docpublic * @brief Only include mods that do not have the specified tag * @param Tag Tag to exclude * @return *this @@ -156,6 +178,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& WithoutTags(const FString& Tag); /** + * @docpublic * @brief Only include mods that do not have any of the specified tags ( NOT (tag1 OR tag2 OR tagN...)) * @param NewTags Tags to exclude * @return *this @@ -163,6 +186,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& WithoutTags(const TArray& NewTags); /** + * @docpublic * @brief Returns a sub-range of query results from StartIndex to StartIndex + ResultCount * @param StartIndex Zero-based index of first result to return * @param ResultCount Number of results to return @@ -171,6 +195,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& IndexedResults(uint64 StartIndex, uint64 ResultCount); /** + * @docpublic * @brief Returns a sub-range of query results based on a specified page size and index * @param PageNumber Zero-based index of page to return * @param PageSize Number of results in a page @@ -179,6 +204,7 @@ struct MODIO_API FModioFilterParams FModioFilterParams& PagedResults(uint64 PageNumber, uint64 PageSize); /** + * @docpublic * @brief Returned mods according to the specified revenue type (free, paid, both) * @param RevenueFilter Filter to use * @return *this @@ -186,12 +212,14 @@ struct MODIO_API FModioFilterParams FModioFilterParams& RevenueType(EModioRevenueFilterType RevenueFilter); /** + * @docpublic * @brief Indicates results should exclude all mods which contain mature content * @return *this */ FModioFilterParams& DisallowMatureContent(); /** + * @docpublic * @brief Indicates results should be filtered by maturity options * @param ByMaturity Maturity flags to filter by * @return *this @@ -199,9 +227,10 @@ struct MODIO_API FModioFilterParams FModioFilterParams& WithMatureContentFlags(EModioMaturityFlags ByMaturity); /** - * @brief Converts the filter params to a string suitable for use in the REST API. - * @note Performs a allocation to acquire the string - * @return FString containing the filter parameters + * @docpublic + * @brief Converts the filter params to a string suitable for use in the REST API. + * @note Performs allocation to acquire the string + * @return FString containing the filter parameters */ FString ToString() const; @@ -227,7 +256,7 @@ struct MODIO_API FModioFilterParams }; /** - * Helper struct for named preset filter parameters + * @brief Helper struct for named preset filter parameters */ USTRUCT(BlueprintType) struct MODIO_API FModioPresetFilterParams @@ -262,13 +291,20 @@ struct MODIO_API FModioPresetFilterParams } }; +/** + * @brief Blueprint library for working with preset filter parameters + */ UCLASS() class MODIO_API UModioPresetFilterParamsLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() protected: - // Compiles a preset filter into a concrete set of filter parameters that can be passed to the mod.io plugin + /** + * @brief Converts a preset filter into a concrete set of filter parameters that can be passed to the mod.io plugin + * @param Preset The preset to convert + * @return The converted filter params + */ UFUNCTION(BlueprintCallable, Category = "mod.io|Filter Params") static FModioFilterParams ToFilterParams(const FModioPresetFilterParams& Preset) { diff --git a/Source/Modio/Public/Types/ModioGameInfo.h b/Source/Modio/Public/Types/ModioGameInfo.h index bd4f7d39..835290fa 100644 --- a/Source/Modio/Public/Types/ModioGameInfo.h +++ b/Source/Modio/Public/Types/ModioGameInfo.h @@ -30,31 +30,31 @@ namespace Modio /** * @brief Monetization properties of a game -* 0 = None set (default) -* 1 = Monetization is enabled -* 2 = Marketplace is enabled -* 4 = Partner Program is enabled **/ UENUM(BlueprintType, meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) enum class EGameMonetizationFlags : uint8 { + // None set (default) None = 0, + // Monetization is enabled Monetization = 1, + // Marketplace is enabled Marketplace = 2, + // Partner Program is enabled PartnerProgram = 4, }; /** * @brief Maturity options for a game -* 0 = Don't allow mature content in mods (default) -* 1 = This game allows mods containing mature content -* 2 = This game is for mature audiences only **/ UENUM(BlueprintType, meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) enum class EGameMaturityFlags : uint8 { + // Don't allow mature content in mods (default) None = 0, + // This game allows mods containing mature content MatureModsAllowed = 1, + // This game is for mature audiences only MatureAudiencesOnly = 2, }; @@ -110,8 +110,7 @@ struct MODIO_API FModioGameInfo UPROPERTY(BlueprintReadOnly, Category = "mod.io|GameInfo") FString Instructions; - /** @brief Link to a mod.io guide, modding wiki, or a page where modders can learn how to make and submit mods */ - /// to this game's profile + /** @brief Link to a mod.io guide, modding wiki, or a page where modders can learn how to make and submit mods to this game's profile */ UPROPERTY(BlueprintReadOnly, Category = "mod.io|GameInfo") FString InstructionsUrl; diff --git a/Source/Modio/Public/Types/ModioImageState.h b/Source/Modio/Public/Types/ModioImageState.h index 4ef524f2..721bf780 100644 --- a/Source/Modio/Public/Types/ModioImageState.h +++ b/Source/Modio/Public/Types/ModioImageState.h @@ -19,15 +19,15 @@ UENUM(BlueprintType) enum class EModioImageState : uint8 { - /** Image data is located on hard drive **/ + /** Image data is located on hard drive */ OnDisc, - /** Image data is transferring to a memory location **/ + /** Image data is transferring to a memory location */ LoadingIntoMemory, - /** Image data is located in memory **/ + /** Image data is located in memory */ InMemory, - /** Image data is not readable **/ + /** Image data is not readable */ Corrupted }; \ No newline at end of file diff --git a/Source/Modio/Public/Types/ModioInitializeOptions.h b/Source/Modio/Public/Types/ModioInitializeOptions.h index 8a9dbd83..0f796364 100644 --- a/Source/Modio/Public/Types/ModioInitializeOptions.h +++ b/Source/Modio/Public/Types/ModioInitializeOptions.h @@ -45,7 +45,7 @@ struct MODIO_API FModioInitializeOptions UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "mod.io") TMap ExtendedInitializationParameters; - /** @brief Set Mod.io to run with background thread*/ + /** @brief Set mod.io to run with background thread*/ UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "mod.io") bool bUseBackgroundThread = false; diff --git a/Source/Modio/Public/Types/ModioModCollectionEntry.h b/Source/Modio/Public/Types/ModioModCollectionEntry.h index 3a106406..b32d687f 100644 --- a/Source/Modio/Public/Types/ModioModCollectionEntry.h +++ b/Source/Modio/Public/Types/ModioModCollectionEntry.h @@ -26,12 +26,18 @@ namespace Modio UENUM(BlueprintType) enum class EModioModState : uint8 { - InstallationPending, // dont save + // The mod is pending installation. This state is not saved. + InstallationPending, + // The mod is installed. Installed, - UpdatePending, // saved as installed - Downloading, // installing - dont save - Extracting, // installing- don't save - UninstallPending, // saved as installed + // The mod is pending an update. This state is saved as installed. + UpdatePending, + // The mod is downloading as part of the installation process. This state is not saved. + Downloading, + // The mod is extracting as part of the installation process. This state is not saved. + Extracting, + // The mod is pending uninstallation. This state is saved as installed. + UninstallPending, }; /** diff --git a/Source/Modio/Public/Types/ModioModInfo.h b/Source/Modio/Public/Types/ModioModInfo.h index e3d5fff7..e3aff65c 100644 --- a/Source/Modio/Public/Types/ModioModInfo.h +++ b/Source/Modio/Public/Types/ModioModInfo.h @@ -26,43 +26,38 @@ namespace Modio } /** - * Enumeration that represent mature content for the mod to create + * @brief Enum representing whether or not a mod is visible to users **/ UENUM(BlueprintType, meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) enum class EModioObjectVisibilityFlags : uint8 { - /** Mod is concealed from users **/ + /** Mod is concealed from users */ Hidden = 0, - - /** Mod is openly available **/ + /** Mod is openly available */ Public = 1 }; /** - * Enumeration that represent mature content for the mod to create + * @brief Enum representing mature content that a mod may contain **/ UENUM(BlueprintType, meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) enum class EModioMaturityFlags : uint8 { - /** No maturity **/ + // No maturity None, - - /** Content contains alcohol references **/ + // Content contains alcohol references Alcohol = 1, - - /** Content contains drug references **/ + // Content contains drug references Drugs = 2, - - /** Content contains violence references **/ + // Content contains violence references Violence = 4, - - /** Content contains sexual references **/ + // Content contains sexual references Explicit = 8 }; ENUM_CLASS_FLAGS(EModioMaturityFlags); /** - * Enumeration that represent mod server side status + * @brief Enum representing a mod's server side status **/ UENUM(BlueprintType, meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) enum class EModioModServerSideStatus : uint8 @@ -121,9 +116,8 @@ struct MODIO_API FModioModInfo FDateTime ProfileDateLive; /** - * @brief Flags for maturity options - * Maturity options flagged by the mod developer, this is only relevant if the parent game allows mods to - * be labeled as mature. + * @brief Flags for maturity options. Maturity options are flagged by the mod developer. This is only relevant if + *the parent game allows mods to be labeled as mature. **/ UPROPERTY(BlueprintReadOnly, EditInstanceOnly, Category = "Profile") EModioMaturityFlags ProfileMaturityOption {}; @@ -131,8 +125,10 @@ struct MODIO_API FModioModInfo /** @brief Is the mod marked as visible? * @deprecated Use Visibility property instead */ - UPROPERTY(meta = (DeprecatedProperty, - DeprecationMessage = "Deprecated as of 2023.6 release. Please use the <> instead.")) + UPROPERTY( + meta = (DeprecatedProperty, + DeprecationMessage = + "Deprecated as of 2023.6 release. Please use `EModioObjectVisibilityFlags Visibility` instead.")) bool bVisible_DEPRECATED {}; /** diff --git a/Source/Modio/Public/Types/ModioModManagementEvent.h b/Source/Modio/Public/Types/ModioModManagementEvent.h index fdad2d4b..4894579c 100644 --- a/Source/Modio/Public/Types/ModioModManagementEvent.h +++ b/Source/Modio/Public/Types/ModioModManagementEvent.h @@ -19,14 +19,22 @@ UENUM(BlueprintType) enum class EModioModManagementEventType : uint8 { - Installed, /** Mod installation to local storage completed*/ - Uninstalled, /** Mod uninstallation from local storage completed*/ - Updated, /** Mod local installation updated to latest version*/ - Uploaded, /** Mod file was uploaded*/ - BeginInstall, /** Mod download and installation has started */ - BeginUninstall, /** Mod uninstallation has started */ - BeginUpdate, /** Mod download and update has started*/ - BeginUpload /** Mod upload has started*/ + /** Mod installation to local storage completed*/ + Installed, + /** Mod uninstallation from local storage completed*/ + Uninstalled, + /** Mod local installation updated to latest version*/ + Updated, + /** Mod file was uploaded*/ + Uploaded, + /** Mod download and installation has started */ + BeginInstall, + /** Mod uninstallation has started */ + BeginUninstall, + /** Mod download and update has started*/ + BeginUpdate, + /** Mod upload has started*/ + BeginUpload }; /** @brief Simple struct representing the outcome of a mod management operation */ diff --git a/Source/Modio/Public/Types/ModioModProgressInfo.h b/Source/Modio/Public/Types/ModioModProgressInfo.h index 50d8a97d..5f4ae8d1 100644 --- a/Source/Modio/Public/Types/ModioModProgressInfo.h +++ b/Source/Modio/Public/Types/ModioModProgressInfo.h @@ -23,11 +23,16 @@ namespace Modio UENUM(BlueprintType) enum class EModioModProgressState : uint8 { - Initializing, // Download information is being retrieved from mod.io servers - Downloading, // Mod archive is downloading from mod.io servers - Extracting, // Mod archive is downloaded and now extracting - Compressing, // Mod archive is being compressed from files on disk - Uploading // Mod archive is uploading to mod.io servers + // Download information is being retrieved from mod.io servers + Initializing, + // Mod archive is downloading from mod.io servers + Downloading, + // Mod archive is downloaded and now extracting + Extracting, + // Mod archive is being compressed from files on disk + Compressing, + // Mod archive is uploading to mod.io servers + Uploading }; /** diff --git a/Source/Modio/Public/Types/ModioOpenStoreResult.h b/Source/Modio/Public/Types/ModioOpenStoreResult.h new file mode 100644 index 00000000..ce3cb60b --- /dev/null +++ b/Source/Modio/Public/Types/ModioOpenStoreResult.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2024 mod.io Pty Ltd. + * + * This file is part of the mod.io UE5 Plugin. + * + * Distributed under the MIT License. (See accompanying file LICENSE or + * view online at ) + * + */ + +#pragma once + +#include "ModioOpenStoreResult.generated.h" + +/** + * @brief Enumerator of potential results on attempting to open a native platform store + **/ +UENUM(BlueprintType) +enum class EModioOpenStoreResult : uint8 +{ + /** Store opened successfully **/ + Success, + + /** Monetization not active **/ + FailedInactive, + + /** The current platform does not support a native store **/ + FailedUnsupportedPlatform, + + /** Failed to open for an unknown reason **/ + FailedUnknown +}; \ No newline at end of file diff --git a/Source/Modio/Public/Types/ModioRating.h b/Source/Modio/Public/Types/ModioRating.h index a07a8fc3..69f0a41d 100644 --- a/Source/Modio/Public/Types/ModioRating.h +++ b/Source/Modio/Public/Types/ModioRating.h @@ -18,12 +18,10 @@ UENUM(BlueprintType) enum class EModioRating : uint8 { - /** A neutral rating **/ + /** A neutral rating */ Neutral, - - /** A positive rating **/ + /** A positive rating */ Positive, - - /** A negative rating **/ + /** A negative rating */ Negative }; \ No newline at end of file diff --git a/Source/Modio/Public/Types/ModioReportParams.h b/Source/Modio/Public/Types/ModioReportParams.h index 7e3afc51..92199a74 100644 --- a/Source/Modio/Public/Types/ModioReportParams.h +++ b/Source/Modio/Public/Types/ModioReportParams.h @@ -24,28 +24,21 @@ namespace Modio UENUM(BlueprintType) enum class EModioReportType : uint8 { - /** A generic mod report **/ + /** A generic mod report */ Generic = 0, - - /** Digital Millennium Copyright Act mod report **/ + /** Digital Millennium Copyright Act mod report */ DMCA = 1, - - /** Not working mod report **/ + /** Not working mod report */ NotWorking = 2, - - /** Rude content mod report **/ + /** Rude content mod report */ RudeContent = 3, - - /** Illegal content mod report **/ + /** Illegal content mod report */ IllegalContent = 4, - - /** Stolen content mod report **/ + /** Stolen content mod report */ StolenContent = 5, - - /** False information mod report **/ + /** False information mod report */ FalseInformation = 6, - - /** Other type of mod report **/ + /** Other type of mod report */ Other = 7 }; ENUM_RANGE_BY_FIRST_AND_LAST(EModioReportType, EModioReportType::Generic, EModioReportType::Other); diff --git a/Source/Modio/Public/Types/ModioTokenPack.h b/Source/Modio/Public/Types/ModioTokenPack.h new file mode 100644 index 00000000..59ba3ca2 --- /dev/null +++ b/Source/Modio/Public/Types/ModioTokenPack.h @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2024 mod.io Pty Ltd. + * + * This file is part of the mod.io UE4 Plugin. + * + * Distributed under the MIT License. (See accompanying file LICENSE or + * view online at ) + * + */ + +#pragma once + +#include "Types/ModioUnsigned64.h" +#include "Types/ModioCommonTypes.h" + +#include "Interfaces/OnlineStoreInterfaceV2.h" + +#include "ModioTokenPack.generated.h" + +/** + * @brief A wrapper type around the Unreal Engine type FOnlineStoreOffer, representing a platform-agnostic store offer/product, e.g a Premium Currency pack. + */ +USTRUCT(BlueprintType) +struct MODIO_API FModioTokenPack +{ + GENERATED_BODY() + +private: + + FOnlineStoreOffer Underlying; + +public: + + FModioTokenPack() = default; + + FModioTokenPack(const FOnlineStoreOffer& InOffer) + { + Underlying = InOffer; + } + + FText GetTitle() const + { + return Underlying.Title; + } + + FText GetDescription() const + { + return Underlying.Description; + } + + FText GetLongDescription() const + { + return Underlying.LongDescription; + } + + FText GetRegularPrice() const + { + return Underlying.GetDisplayRegularPrice(); + } + + FText GetDisplayPrice() const + { + return Underlying.GetDisplayPrice(); + } + + int64 GetNumericPrice() const + { + return Underlying.NumericPrice; + } + + FString GetCurrencyCode() const + { + return Underlying.CurrencyCode; + } + + FDateTime GetReleaseDate() const + { + return Underlying.ReleaseDate; + } + + FDateTime GetExpirationDate() const + { + return Underlying.ExpirationDate; + } + + bool IsPurchasable() const + { + return Underlying.IsPurchaseable(); + } + + TMap GetFields() const + { + return Underlying.DynamicFields; + } + + FString GetId() const + { + return Underlying.OfferId; + } + + FModioTokenPackID GetModioId() const + { + return FModioTokenPackID(Underlying.OfferId); + } + +}; + +USTRUCT(BlueprintType) +struct MODIO_API FModioOptionalTokenPack +{ + GENERATED_BODY() + + TOptional Internal; +}; + +UCLASS() +class UModioTokenPackLibrary : public UBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + + UFUNCTION(BlueprintCallable, BlueprintPure, Meta = (Category = "Token Pack")) + static FText GetTitle(const FModioTokenPack& In) + { + return In.GetTitle(); + } + + UFUNCTION(BlueprintCallable, BlueprintPure, Meta = (Category = "Token Pack")) + static FText GetDescription(const FModioTokenPack& In) + { + return In.GetDescription(); + } + + UFUNCTION(BlueprintCallable, BlueprintPure, Meta = (Category = "Token Pack")) + static FText GetLongDescription(const FModioTokenPack& In) + { + return In.GetLongDescription(); + } + + UFUNCTION(BlueprintCallable, BlueprintPure, Meta = (Category = "Token Pack")) + static FText GetRegularPrice(const FModioTokenPack& In) + { + return In.GetRegularPrice(); + } + + UFUNCTION(BlueprintCallable, BlueprintPure, Meta = (Category = "Token Pack")) + static FText GetDisplayPrice(const FModioTokenPack& In) + { + return In.GetDisplayPrice(); + } + + UFUNCTION(BlueprintCallable, BlueprintPure, Meta = (Category = "Token Pack")) + static int64 GetNumericPrice(const FModioTokenPack& In) + { + return In.GetNumericPrice(); + } + + UFUNCTION(BlueprintCallable, BlueprintPure, Meta = (Category = "Token Pack")) + static bool IsPurchasable(const FModioTokenPack& In) + { + return In.IsPurchasable(); + } + + UFUNCTION(BlueprintCallable, BlueprintPure, Meta = (Category = "Token Pack")) + static TMap GetFields(const FModioTokenPack& In) + { + return In.GetFields(); + } + + UFUNCTION(BlueprintCallable, BlueprintPure, Meta = (Category = "Token Pack")) + static FString GetId(const FModioTokenPack& In) + { + return In.GetId(); + } + + UFUNCTION(BlueprintCallable, BlueprintPure, Meta = (Category = "Token Pack")) + static FModioTokenPackID GetModioId(const FModioTokenPack& In) + { + return In.GetModioId(); + } + +}; \ No newline at end of file diff --git a/Source/Modio/Public/Types/ModioTokenPackList.h b/Source/Modio/Public/Types/ModioTokenPackList.h new file mode 100644 index 00000000..04538d0d --- /dev/null +++ b/Source/Modio/Public/Types/ModioTokenPackList.h @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2021 mod.io Pty Ltd. + * + * This file is part of the mod.io UE4 Plugin. + * + * Distributed under the MIT License. (See accompanying file LICENSE or + * view online at ) + * + */ + +#pragma once + +#include "Types/ModioList.h" +#include "Types/ModioTokenPack.h" +#include "Types/ModioPagedResult.h" + +#include "ModioTokenPackList.generated.h" + +#if CPP +struct MODIO_API FModioTokenPackList : public FModioPagedResult, public FModioList +{ + /** + * Default constructor without parameters + **/ + FModioTokenPackList() = default; + + /** + * Constructor that takes an array of token packs and an index of paged results + **/ + FModioTokenPackList(const FModioPagedResult& PagedResult, TArray&& TokenPackList); + + /** + * Constructor that takes only an array of token packs + */ + FModioTokenPackList(TArray TokenPackList); +}; + +#else + +/** +* Strong type struct to wrap multiple TokenPack indexed by a paged result +**/ +USTRUCT(NoExport, BlueprintType) +struct MODIO_API FModioTokenPackList +{ + /** + * A paged result property + **/ + UPROPERTY() + FModioPagedResult PagedResult; + + /** + * Arrray of Token Packs + **/ + UPROPERTY() + TArray InternalList; +}; + +#endif + +/** + * Struct to wrap ModInfoList into an optional parameter + **/ +USTRUCT(BlueprintType) +struct MODIO_API FModioOptionalTokenPackList +{ + GENERATED_BODY() + + /** + * Default constructor without parameters + **/ + FModioOptionalTokenPackList() = default; + + /** + * Constructor with a Token Pack list parameter to initialize an instance + * @param TokenPackList Optional value of a FModioTokenPackList + **/ + FModioOptionalTokenPackList(TOptional&& TokenPackList); + + /** + * Stored optional ModioTokenPackList + **/ + TOptional Internal; +}; \ No newline at end of file diff --git a/Source/Modio/Public/UI/ModioExampleLibrary.h b/Source/Modio/Public/UI/ModioExampleLibrary.h index d7b2c79a..359fcfba 100644 --- a/Source/Modio/Public/UI/ModioExampleLibrary.h +++ b/Source/Modio/Public/UI/ModioExampleLibrary.h @@ -39,7 +39,7 @@ class UModioExampleLibrary : public UBlueprintFunctionLibrary /** * @brief Runs a filter over the user's subscription list - * @param FilterParams Supports the following operations: + * @param FilterParams The filters to use on the user's subscription list * @param Callback Called when mod list has been processed **/ UFUNCTION(BlueprintCallable, Category = "mod.io|Example|UserSubscription") diff --git a/Source/ModioEditor/Private/DetailCustomizations/ModioBrowseModFileDetails.cpp b/Source/ModioEditor/Private/DetailCustomizations/ModioBrowseModFileDetails.cpp index 63423b71..31178bec 100644 --- a/Source/ModioEditor/Private/DetailCustomizations/ModioBrowseModFileDetails.cpp +++ b/Source/ModioEditor/Private/DetailCustomizations/ModioBrowseModFileDetails.cpp @@ -8,15 +8,16 @@ * */ -#include "../../Public/DetailCustomizations/ModioBrowseModFileDetails.h" -#include "../../Public/Widgets/SModioEditorWindowCompoundWidget.h" -#include -#include -#include -#include -#include -#include -#include +#include "DetailCustomizations/ModioBrowseModFileDetails.h" +#include "Widgets/SModioEditorWindowCompoundWidget.h" +#include "DetailCategoryBuilder.h" +#include "DetailCustomizations/SModFileRow.h" +#include "DetailLayoutBuilder.h" +#include "DetailWidgetRow.h" +#include "Objects/ModioBrowseModFileCollectionObject.h" +#include "Objects/ModioBrowseModFileObject.h" +#include "Misc/EngineVersionComparison.h" +#include "WindowManager.h" TSharedRef ModioBrowseModFileDetails::MakeInstance() { @@ -56,7 +57,6 @@ void ModioBrowseModFileDetails::DrawBrowseModFile(IDetailLayoutBuilder& DetailBu .WholeRowContent() [ SAssignNew(ListView, SListView>) - .ItemHeight(50) .SelectionMode(ESelectionMode::Multi) .ListItemsSource(&Source) .OnGenerateRow_Lambda([this](TSharedPtr Item, const TSharedRef& OwnerTable)->TSharedRef diff --git a/Source/ModioEditor/Private/DetailCustomizations/ModioBrowseModsParamsDetails.cpp b/Source/ModioEditor/Private/DetailCustomizations/ModioBrowseModsParamsDetails.cpp index 0806c4f9..3d4f843e 100644 --- a/Source/ModioEditor/Private/DetailCustomizations/ModioBrowseModsParamsDetails.cpp +++ b/Source/ModioEditor/Private/DetailCustomizations/ModioBrowseModsParamsDetails.cpp @@ -8,14 +8,15 @@ * */ -#include "../../Public/DetailCustomizations/ModioBrowseModsParamsDetails.h" +#include "DetailCustomizations/ModioBrowseModsParamsDetails.h" #include "Engine/StaticMesh.h" -#include "../../Public/Objects/ModioBrowseModsObject.h" +#include "Objects/ModioBrowseModsObject.h" #include "PropertyEditing.h" -#include -#include -#include -#include +#include "Framework/Application/SlateApplication.h" +#include "WindowManager.h" +#include "PropertyCustomizationHelpers.h" +#include "Widgets/Input/SSearchBox.h" +#include "Misc/EngineVersionComparison.h" #define LOCTEXT_NAMESPACE "ModioBrowseModsParamsDetails" @@ -86,7 +87,9 @@ void ModioBrowseModsParamsDetails::DrawEditMod(IDetailLayoutBuilder& DetailBuild .WholeRowContent() [ SAssignNew(ListView, SListView>) +#if UE_VERSION_OLDER_THAN(5, 5, 0) .ItemHeight(50) +#endif .ListItemsSource(&Source) .HeaderRow ( diff --git a/Source/ModioEditor/Private/DetailCustomizations/ModioCreateModFileParamsDetails.cpp b/Source/ModioEditor/Private/DetailCustomizations/ModioCreateModFileParamsDetails.cpp index 52b9b7e0..fb29867b 100644 --- a/Source/ModioEditor/Private/DetailCustomizations/ModioCreateModFileParamsDetails.cpp +++ b/Source/ModioEditor/Private/DetailCustomizations/ModioCreateModFileParamsDetails.cpp @@ -8,13 +8,13 @@ * */ -#include "../../Public/DetailCustomizations/ModioCreateModFileParamsDetails.h" -#include -#include -#include -#include -#include -#include +#include "DetailCustomizations/ModioCreateModFileParamsDetails.h" +#include "DetailLayoutBuilder.h" +#include "Objects/ModioCreateNewModFileParamsObject.h" +#include "Widgets/Input/SEditableTextBox.h" +#include "WindowManager.h" +#include "DetailCategoryBuilder.h" +#include "DetailWidgetRow.h" TSharedRef ModioCreateModFileParamsDetails::MakeInstance() { diff --git a/Source/ModioEditor/Private/DetailCustomizations/ModioCreateModParamsDetails.cpp b/Source/ModioEditor/Private/DetailCustomizations/ModioCreateModParamsDetails.cpp index d1619240..5ebc1d8a 100644 --- a/Source/ModioEditor/Private/DetailCustomizations/ModioCreateModParamsDetails.cpp +++ b/Source/ModioEditor/Private/DetailCustomizations/ModioCreateModParamsDetails.cpp @@ -8,23 +8,23 @@ * */ -#include "../../Public/DetailCustomizations/ModioCreateModParamsDetails.h" +#include "DetailCustomizations/ModioCreateModParamsDetails.h" #include "Engine/StaticMesh.h" -#include "../../Public/Objects/ModioCreateModParamsObject.h" +#include "Objects/ModioCreateModParamsObject.h" #include "PropertyEditing.h" #include "Widgets/Input/SCheckBox.h" #include "Misc/EngineVersionComparison.h" #if UE_VERSION_OLDER_THAN(5, 3, 0) -#include - #include +#include "DesktopPlatform/Public/IDesktopPlatform.h" + #include "DesktopPlatform/Public/DesktopPlatformModule.h" #else #include "DesktopPlatformModule.h" #include "IDesktopPlatform.h" #endif -#include -#include -#include -#include +#include "Framework/Application/SlateApplication.h" +#include "WindowManager.h" +#include "Widgets/Images/SThrobber.h" +#include "PropertyCustomizationHelpers.h" #define LOCTEXT_NAMESPACE "ModioCreateModParamsDetails" diff --git a/Source/ModioEditor/Private/DetailCustomizations/ModioEditModParamsDetails.cpp b/Source/ModioEditor/Private/DetailCustomizations/ModioEditModParamsDetails.cpp index b3717074..b4da44f4 100644 --- a/Source/ModioEditor/Private/DetailCustomizations/ModioEditModParamsDetails.cpp +++ b/Source/ModioEditor/Private/DetailCustomizations/ModioEditModParamsDetails.cpp @@ -8,23 +8,23 @@ * */ -#include "../../Public/DetailCustomizations/ModioEditModParamsDetails.h" +#include "DetailCustomizations/ModioEditModParamsDetails.h" #include "Engine/StaticMesh.h" -#include "../../Public/Objects/ModioEditModParamsObject.h" +#include "Objects/ModioEditModParamsObject.h" #include "PropertyEditing.h" #include "Widgets/Input/SCheckBox.h" #include "Misc/EngineVersionComparison.h" #if UE_VERSION_OLDER_THAN(5, 3, 0) -#include - #include +#include "DesktopPlatform/Public/IDesktopPlatform.h" + #include "DesktopPlatform/Public/DesktopPlatformModule.h" #else #include "DesktopPlatformModule.h" #include "IDesktopPlatform.h" #endif -#include -#include -#include -#include +#include "Framework/Application/SlateApplication.h" +#include "WindowManager.h" +#include "Widgets/Images/SThrobber.h" +#include "PropertyCustomizationHelpers.h" #define LOCTEXT_NAMESPACE "ModioCreateModParamsDetails" diff --git a/Source/ModioEditor/Private/DetailCustomizations/SModFileRow.cpp b/Source/ModioEditor/Private/DetailCustomizations/SModFileRow.cpp index 257a3c14..c051dbcc 100644 --- a/Source/ModioEditor/Private/DetailCustomizations/SModFileRow.cpp +++ b/Source/ModioEditor/Private/DetailCustomizations/SModFileRow.cpp @@ -8,12 +8,12 @@ * */ -#include "../../Public/DetailCustomizations/SModFileRow.h" -#include -#include +#include "DetailCustomizations/SModFileRow.h" +#include "Widgets/SModioEditorWindowCompoundWidget.h" +#include "WindowManager.h" #include "Misc/EngineVersionComparison.h" #if UE_VERSION_OLDER_THAN(5, 3, 0) - #include + #include "Launch/Resources/Version.h" #endif void SModFileRow::Construct(const FArguments& InArgs, const TSharedRef& InOwnerTableView) @@ -37,7 +37,7 @@ TSharedRef SModFileRow::GenerateWidgetForColumn(const FName& ColumnName return SNew(SHorizontalBox) +SHorizontalBox::Slot() - .Padding(FMargin(5.f, 10.f, 0.f, 0.f)) + .Padding(FMargin(5.f, 10.f, 0.f, 10.f)) [ SNew(STextBlock) .Text(FText::FromString(Item->Name)) @@ -48,7 +48,7 @@ TSharedRef SModFileRow::GenerateWidgetForColumn(const FName& ColumnName return SNew(SHorizontalBox) + SHorizontalBox::Slot() - .Padding(FMargin(5.f, 10.f, 0.f, 0.f)) + .Padding(FMargin(5.f, 10.f, 0.f, 10.f)) [ SNew(STextBlock) .Text(FText::FromString(PlatformString)) @@ -59,7 +59,7 @@ TSharedRef SModFileRow::GenerateWidgetForColumn(const FName& ColumnName return SNew(SHorizontalBox) + SHorizontalBox::Slot() - .Padding(FMargin(5.f, 10.f, 0.f, 0.f)) + .Padding(FMargin(5.f, 10.f, 0.f, 10.f)) [ SNew(STextBlock) .Text(FText::FromString(Item->Version)) @@ -70,7 +70,7 @@ TSharedRef SModFileRow::GenerateWidgetForColumn(const FName& ColumnName return SNew(SHorizontalBox) + SHorizontalBox::Slot() - .Padding(FMargin(5.f, 10.f, 0.f, 0.f)) + .Padding(FMargin(5.f, 10.f, 0.f, 10.f)) [ SNew(STextBlock) .Text(FText::FromString(Item->Status)) diff --git a/Source/ModioEditor/Private/ModioEditor.cpp b/Source/ModioEditor/Private/ModioEditor.cpp index aef22e33..be5d51f4 100644 --- a/Source/ModioEditor/Private/ModioEditor.cpp +++ b/Source/ModioEditor/Private/ModioEditor.cpp @@ -124,7 +124,7 @@ void FModioEditor::DisplayGettingStarted() void FModioEditor::PluginButtonClicked() { FModioInitializeOptions InitializeOptions = UModioSDKLibrary::GetProjectInitializeOptionsForSessionId(FString("ModioUnrealEditor")); - if (InitializeOptions.GameId.ToString().Equals("InvalidGameID") || InitializeOptions.ApiKey.ToString().Equals("InvalidApiKey")) + if (!InitializeOptions.GameId.IsValid() || !InitializeOptions.ApiKey.IsValid()) { const FText Title = FText::FromString("mod.io"); const FText Message = FText::FromString("Please specify a valid Game Id and Api Key in 'Project Settings->Plugins->mod.io'"); diff --git a/Source/ModioEditor/Private/Widgets/SModioEditorUserGamesList.cpp b/Source/ModioEditor/Private/Widgets/SModioEditorUserGamesList.cpp index bf2f08f9..feda125c 100644 --- a/Source/ModioEditor/Private/Widgets/SModioEditorUserGamesList.cpp +++ b/Source/ModioEditor/Private/Widgets/SModioEditorUserGamesList.cpp @@ -11,6 +11,7 @@ #include "Widgets/SModioEditorUserGamesList.h" #include "EngineMinimal.h" +#include "Misc/EngineVersionComparison.h" #include "Widgets/Images/SThrobber.h" #include "Widgets/SOverlay.h" @@ -145,7 +146,9 @@ void SModioEditorUserGamesList::DrawGameList() .DefaultLabel(LOCTEXT("GameListHeaderId", "ID")) ) .SelectionMode(ESelectionMode::Single) +#if UE_VERSION_OLDER_THAN(5, 5, 0) .ItemHeight(32) +#endif .ListItemsSource(&Games) .OnGenerateRow(this, &SModioEditorUserGamesList::GenerateGameInfoRow) .OnSelectionChanged(this, &SModioEditorUserGamesList::OnGameSelectedFromList) diff --git a/Source/ModioEditor/Private/WindowManager.cpp b/Source/ModioEditor/Private/WindowManager.cpp index fa6d9bff..2a61acbf 100644 --- a/Source/ModioEditor/Private/WindowManager.cpp +++ b/Source/ModioEditor/Private/WindowManager.cpp @@ -11,20 +11,20 @@ #include "WindowManager.h" #include "Misc/EngineVersionComparison.h" #if UE_VERSION_OLDER_THAN(5, 3, 0) - #include - #include + #include "DesktopPlatform/Public/IDesktopPlatform.h" + #include "DesktopPlatform/Public/DesktopPlatformModule.h" #else #include "DesktopPlatformModule.h" #include "IDesktopPlatform.h" #endif -#include -#include -#include -#include -#include -#include -#include -#include +#include "DetailCustomizations/ModioCreateModParamsDetails.h" +#include "DetailCustomizations/ModioBrowseModFileDetails.h" +#include "DetailCustomizations/ModioBrowseModsParamsDetails.h" +#include "DetailCustomizations/ModioCreateModFileParamsDetails.h" +#include "DetailCustomizations/ModioEditModParamsDetails.h" +#include "Objects/ModioCreateModParamsObject.h" +#include "Widgets/SWindow.h" +#include "Widgets/SModioEditorWindowCompoundWidget.h" TSharedPtr WindowManager::GetWindow() { diff --git a/Source/ModioEditor/Public/DetailCustomizations/SModFileRow.h b/Source/ModioEditor/Public/DetailCustomizations/SModFileRow.h index 16d47785..fa960719 100644 --- a/Source/ModioEditor/Public/DetailCustomizations/SModFileRow.h +++ b/Source/ModioEditor/Public/DetailCustomizations/SModFileRow.h @@ -14,8 +14,8 @@ #include "SlateFwd.h" #include "SlateBasics.h" #include "Widgets/DeclarativeSyntaxSupport.h" -#include -#include +#include "Objects/ModioBrowseModFileObject.h" +#include "Widgets/Views/STableRow.h" class MODIOEDITOR_API SModFileRow : public SMultiColumnTableRow> { diff --git a/Source/ModioEditor/Public/Objects/ModioBrowseModFileObject.h b/Source/ModioEditor/Public/Objects/ModioBrowseModFileObject.h index facc6ee6..aa9db436 100644 --- a/Source/ModioEditor/Public/Objects/ModioBrowseModFileObject.h +++ b/Source/ModioEditor/Public/Objects/ModioBrowseModFileObject.h @@ -11,7 +11,7 @@ #pragma once #include "CoreMinimal.h" -#include +#include "Types/ModioModInfo.h" #include "ModioBrowseModFileObject.generated.h" USTRUCT() diff --git a/Source/ModioEditor/Public/Objects/ModioBrowseModsObject.h b/Source/ModioEditor/Public/Objects/ModioBrowseModsObject.h index a2bec8ad..79fbeb05 100644 --- a/Source/ModioEditor/Public/Objects/ModioBrowseModsObject.h +++ b/Source/ModioEditor/Public/Objects/ModioBrowseModsObject.h @@ -11,7 +11,7 @@ #pragma once #include "CoreMinimal.h" -#include +#include "Types/ModioModInfo.h" #include "ModioBrowseModsObject.generated.h" diff --git a/Source/ModioEditor/Public/Objects/ModioCreateNewModFileParamsObject.h b/Source/ModioEditor/Public/Objects/ModioCreateNewModFileParamsObject.h index 3a8cec49..64e89960 100644 --- a/Source/ModioEditor/Public/Objects/ModioCreateNewModFileParamsObject.h +++ b/Source/ModioEditor/Public/Objects/ModioCreateNewModFileParamsObject.h @@ -11,7 +11,7 @@ #pragma once #include "CoreMinimal.h" -#include +#include "Types/ModioCommonTypes.h" #include "ModioCreateNewModFileParamsObject.generated.h" diff --git a/Source/ModioEditor/Public/Objects/ModioEditModParamsObject.h b/Source/ModioEditor/Public/Objects/ModioEditModParamsObject.h index 08f7506d..2d0d457e 100644 --- a/Source/ModioEditor/Public/Objects/ModioEditModParamsObject.h +++ b/Source/ModioEditor/Public/Objects/ModioEditModParamsObject.h @@ -11,7 +11,7 @@ #pragma once #include "CoreMinimal.h" -#include +#include "Types/ModioModInfo.h" #include "ModioEditModParamsObject.generated.h" @@ -33,7 +33,7 @@ class MODIOEDITOR_API UModioEditModParamsObject : public UObject UPROPERTY(EditAnywhere, Category = "Modio Edit Mod Params") FString NamePath; - UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Deprecated as of 2023.6 release. Please use the <> instead.")) + UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Deprecated as of 2023.6 release. Please use `EModioObjectVisibilityFlags Visibility` instead.")) bool bVisible_DEPRECATED; UPROPERTY(EditAnywhere, Category = "Modio Edit Mod Params") diff --git a/Source/ModioEditor/Public/Widgets/SModioEditorWindowCompoundWidget.h b/Source/ModioEditor/Public/Widgets/SModioEditorWindowCompoundWidget.h index 88284a35..229a113c 100644 --- a/Source/ModioEditor/Public/Widgets/SModioEditorWindowCompoundWidget.h +++ b/Source/ModioEditor/Public/Widgets/SModioEditorWindowCompoundWidget.h @@ -12,16 +12,16 @@ #include "CoreMinimal.h" #include "Widgets/SCompoundWidget.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "Types/ModioGameInfo.h" +#include "Widgets/DeclarativeSyntaxSupport.h" +#include "Brushes/SlateDynamicImageBrush.h" +#include "Widgets/SBoxPanel.h" +#include "Widgets/Text/STextBlock.h" +#include "Widgets/Input/SEditableTextBox.h" +#include "Widgets/Images/SThrobber.h" +#include "Widgets/Input/SButton.h" +#include "Widgets/Notifications/SProgressBar.h" +#include "Widgets/Images/SImage.h" class UModioSubsystem; class UModioBrowseModsObject; diff --git a/Source/ModioEx/Public/Library/ModioSubmissionExtensionLibrary.h b/Source/ModioEx/Public/Library/ModioSubmissionExtensionLibrary.h index 09ca2c25..3a481d4a 100644 --- a/Source/ModioEx/Public/Library/ModioSubmissionExtensionLibrary.h +++ b/Source/ModioEx/Public/Library/ModioSubmissionExtensionLibrary.h @@ -24,7 +24,7 @@ class UModioSubmissionExtensionLibrary : public UBlueprintFunctionLibrary public: /** * @brief Queues the upload of a new mod file release for the specified mod, using the submitted parameters. This - * upload method accepts a a block of memory TArray rather than a file path. The upload's progress can be + * upload method accepts a block of memory `TArray` rather than a file path. The upload's progress can be * tracked in the same way as downloads; when completed, a Mod Management Event will be triggered with the result * code for the upload. * @param Target The ModioSubsystem object @@ -37,7 +37,7 @@ class UModioSubmissionExtensionLibrary : public UBlueprintFunctionLibrary /** * @brief Queues the upload of a new mod file release for the specified mod, using the submitted parameters. This upload method - * accepts a a block of memory TArray rather than a file path. The + * accepts a block of memory `TArray` rather than a file path. The * upload's progress can be tracked in the same way as downloads; when completed, a Mod Management Event will be * triggered with the result code for the upload. * @param Target The ModioSubsystem object diff --git a/Source/ThirdParty/NativeSDK b/Source/ThirdParty/NativeSDK index 3432e708..a0d800f0 160000 --- a/Source/ThirdParty/NativeSDK +++ b/Source/ThirdParty/NativeSDK @@ -1 +1 @@ -Subproject commit 3432e708a397d3786d7d52564d2943543d5fae1f +Subproject commit a0d800f06592878e15aa922b8a564ac1696efc4f