diff --git a/API/GameModeBase-HandleSeamlessTravelPlayer(Controller).md b/API/GameModeBase-HandleSeamlessTravelPlayer(Controller).md
new file mode 100644
index 00000000..4d018a97
--- /dev/null
+++ b/API/GameModeBase-HandleSeamlessTravelPlayer(Controller).md
@@ -0,0 +1,10 @@
+### [UnrealEngine.Framework](./UnrealEngine-Framework.md 'UnrealEngine.Framework').[GameModeBase](./GameModeBase.md 'UnrealEngine.Framework.GameModeBase')
+## GameModeBase.HandleSeamlessTravelPlayer(UnrealEngine.Framework.Controller) Method
+Reinitializes a player remained through a seamless level transition
+```csharp
+public void HandleSeamlessTravelPlayer(UnrealEngine.Framework.Controller controller);
+```
+#### Parameters
+
+`controller` [Controller](./Controller.md 'UnrealEngine.Framework.Controller')
+
diff --git a/API/GameModeBase-UseSeamlessTravel.md b/API/GameModeBase-UseSeamlessTravel.md
new file mode 100644
index 00000000..77a30142
--- /dev/null
+++ b/API/GameModeBase-UseSeamlessTravel.md
@@ -0,0 +1,8 @@
+### [UnrealEngine.Framework](./UnrealEngine-Framework.md 'UnrealEngine.Framework').[GameModeBase](./GameModeBase.md 'UnrealEngine.Framework.GameModeBase')
+## GameModeBase.UseSeamlessTravel Property
+Gets or sets whether the game perform seamless map travels which loads in the background and doesn't disconnect clients
+```csharp
+public bool UseSeamlessTravel { get; set; }
+```
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
diff --git a/API/GameModeBase.md b/API/GameModeBase.md
index 61a32976..4dc59f72 100644
--- a/API/GameModeBase.md
+++ b/API/GameModeBase.md
@@ -5,5 +5,8 @@ Defines the game being played, instantiated only on the server
public class GameModeBase : UnrealEngine.Framework.Actor
```
Inheritance [System.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System.Object') 🡒 [Actor](./Actor.md 'UnrealEngine.Framework.Actor') 🡒 GameModeBase
+### Properties
+- [UseSeamlessTravel](./GameModeBase-UseSeamlessTravel.md 'UnrealEngine.Framework.GameModeBase.UseSeamlessTravel')
### Methods
+- [HandleSeamlessTravelPlayer(UnrealEngine.Framework.Controller)](./GameModeBase-HandleSeamlessTravelPlayer(Controller).md 'UnrealEngine.Framework.GameModeBase.HandleSeamlessTravelPlayer(UnrealEngine.Framework.Controller)')
- [SwapPlayerControllers(UnrealEngine.Framework.PlayerController, UnrealEngine.Framework.PlayerController)](./GameModeBase-SwapPlayerControllers(PlayerController_PlayerController).md 'UnrealEngine.Framework.GameModeBase.SwapPlayerControllers(UnrealEngine.Framework.PlayerController, UnrealEngine.Framework.PlayerController)')
diff --git a/Source/Managed/Framework/Codegen.cs b/Source/Managed/Framework/Codegen.cs
index 5dfe04df..2aa15b15 100644
--- a/Source/Managed/Framework/Codegen.cs
+++ b/Source/Managed/Framework/Codegen.cs
@@ -35,7 +35,7 @@ namespace UnrealEngine.Framework {
// Automatically generated
internal static class Shared {
- internal const int checksum = 0x2CB;
+ internal const int checksum = 0x2CD;
internal static Dictionary userFunctions = new();
private const string dynamicTypesAssemblyName = "UnrealEngine.DynamicTypes";
private static readonly ModuleBuilder moduleBuilder = AssemblyBuilder.DefineDynamicAssembly(new(dynamicTypesAssemblyName), AssemblyBuilderAccess.RunAndCollect).DefineDynamicModule(dynamicTypesAssemblyName);
@@ -334,6 +334,8 @@ internal static unsafe Dictionary Load(IntPtr* events, IntPtr funct
int head = 0;
IntPtr* gameModeBaseFunctions = (IntPtr*)buffer[position++];
+ GameModeBase.getUseSeamlessTravel = (delegate* unmanaged[Cdecl])gameModeBaseFunctions[head++];
+ GameModeBase.setUseSeamlessTravel = (delegate* unmanaged[Cdecl])gameModeBaseFunctions[head++];
GameModeBase.swapPlayerControllers = (delegate* unmanaged[Cdecl])gameModeBaseFunctions[head++];
}
@@ -1588,6 +1590,8 @@ unsafe partial class Actor {
}
unsafe partial class GameModeBase {
+ internal static delegate* unmanaged[Cdecl] getUseSeamlessTravel;
+ internal static delegate* unmanaged[Cdecl] setUseSeamlessTravel;
internal static delegate* unmanaged[Cdecl] swapPlayerControllers;
}
diff --git a/Source/Managed/Framework/Framework.cs b/Source/Managed/Framework/Framework.cs
index 0cb5836f..d59b233a 100644
--- a/Source/Managed/Framework/Framework.cs
+++ b/Source/Managed/Framework/Framework.cs
@@ -5465,6 +5465,14 @@ private protected GameModeBase() { }
internal GameModeBase(IntPtr pointer) => Pointer = pointer;
+ ///
+ /// Gets or sets whether the game perform seamless map travels which loads in the background and doesn't disconnect clients
+ ///
+ public bool UseSeamlessTravel {
+ get => getUseSeamlessTravel(Pointer);
+ set => setUseSeamlessTravel(Pointer, value);
+ }
+
///
/// Swaps player controllers
///
diff --git a/Source/Managed/Tests/Tests.cs b/Source/Managed/Tests/Tests.cs
index f0563cb7..7ea50773 100644
--- a/Source/Managed/Tests/Tests.cs
+++ b/Source/Managed/Tests/Tests.cs
@@ -3,7 +3,7 @@
using UnrealEngine.Framework;
namespace UnrealEngine.Tests {
- public static class Main {
+ public class Main {
private static ISystem runningSystem;
public static void OnWorldPostBegin() {
diff --git a/Source/Native/Source/UnrealCLR/Private/UnrealCLR.cpp b/Source/Native/Source/UnrealCLR/Private/UnrealCLR.cpp
index 7607c4a6..6ad996dc 100644
--- a/Source/Native/Source/UnrealCLR/Private/UnrealCLR.cpp
+++ b/Source/Native/Source/UnrealCLR/Private/UnrealCLR.cpp
@@ -465,6 +465,8 @@ void UnrealCLR::Module::StartupModule() {
int32 head = 0;
Shared::Functions[position++] = Shared::GameModeBaseFunctions;
+ Shared::GameModeBaseFunctions[head++] = (void*)&UnrealCLRFramework::GameModeBase::GetUseSeamlessTravel;
+ Shared::GameModeBaseFunctions[head++] = (void*)&UnrealCLRFramework::GameModeBase::SetUseSeamlessTravel;
Shared::GameModeBaseFunctions[head++] = (void*)&UnrealCLRFramework::GameModeBase::SwapPlayerControllers;
checksum += head;
diff --git a/Source/Native/Source/UnrealCLR/Private/UnrealCLRFramework.cpp b/Source/Native/Source/UnrealCLR/Private/UnrealCLRFramework.cpp
index 84338b4c..a318e568 100644
--- a/Source/Native/Source/UnrealCLR/Private/UnrealCLRFramework.cpp
+++ b/Source/Native/Source/UnrealCLR/Private/UnrealCLRFramework.cpp
@@ -1683,6 +1683,14 @@ namespace UnrealCLRFramework {
}
namespace GameModeBase {
+ bool GetUseSeamlessTravel(AGameModeBase* GameModeBase) {
+ return GameModeBase->bUseSeamlessTravel;
+ }
+
+ void SetUseSeamlessTravel(AGameModeBase* GameModeBase, bool Value) {
+ GameModeBase->bUseSeamlessTravel = Value;
+ }
+
void SwapPlayerControllers(AGameModeBase* GameModeBase, APlayerController* PlayerController, APlayerController* NewPlayerController) {
GameModeBase->SwapPlayerControllers(PlayerController, NewPlayerController);
}
diff --git a/Source/Native/Source/UnrealCLR/Public/UnrealCLRFramework.h b/Source/Native/Source/UnrealCLR/Public/UnrealCLRFramework.h
index 01e284f8..8280697a 100644
--- a/Source/Native/Source/UnrealCLR/Public/UnrealCLRFramework.h
+++ b/Source/Native/Source/UnrealCLR/Public/UnrealCLRFramework.h
@@ -547,6 +547,8 @@ namespace UnrealCLRFramework {
}
namespace GameModeBase {
+ static bool GetUseSeamlessTravel(AGameModeBase* GameModeBase);
+ static void SetUseSeamlessTravel(AGameModeBase* GameModeBase, bool Value);
static void SwapPlayerControllers(AGameModeBase* GameModeBase, APlayerController* PlayerController, APlayerController* NewPlayerController);
}