@@ -162,6 +162,7 @@
|
|||||||
<Compile Include="Messages\WorldRequest.cs" />
|
<Compile Include="Messages\WorldRequest.cs" />
|
||||||
<Compile Include="SeamlessClient.cs" />
|
<Compile Include="SeamlessClient.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="SeamlessTransfer\ModLoader.cs" />
|
||||||
<Compile Include="SeamlessTransfer\PingServer.cs" />
|
<Compile Include="SeamlessTransfer\PingServer.cs" />
|
||||||
<Compile Include="Messages\Transfer.cs" />
|
<Compile Include="Messages\Transfer.cs" />
|
||||||
<Compile Include="Utilities\Patches.cs" />
|
<Compile Include="Utilities\Patches.cs" />
|
||||||
|
19
SeamlessTransfer/ModLoader.cs
Normal file
19
SeamlessTransfer/ModLoader.cs
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SeamlessClientPlugin.SeamlessTransfer
|
||||||
|
{
|
||||||
|
public class ModLoader
|
||||||
|
{
|
||||||
|
/* Mod loader should download and load missing mods for target server, and unload ones that arent needed
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@@ -7,6 +7,7 @@ using Sandbox.Game.Gui;
|
|||||||
using Sandbox.Game.GUI;
|
using Sandbox.Game.GUI;
|
||||||
using Sandbox.Game.Multiplayer;
|
using Sandbox.Game.Multiplayer;
|
||||||
using Sandbox.Game.World;
|
using Sandbox.Game.World;
|
||||||
|
using Sandbox.Game.World.Generator;
|
||||||
using Sandbox.ModAPI;
|
using Sandbox.ModAPI;
|
||||||
using SeamlessClientPlugin.Utilities;
|
using SeamlessClientPlugin.Utilities;
|
||||||
using System;
|
using System;
|
||||||
@@ -111,6 +112,9 @@ namespace SeamlessClientPlugin.SeamlessTransfer
|
|||||||
LoadOnlinePlayers();
|
LoadOnlinePlayers();
|
||||||
SetWorldSettings();
|
SetWorldSettings();
|
||||||
RemoveOldEntities();
|
RemoveOldEntities();
|
||||||
|
UpdateWorldGenerator();
|
||||||
|
|
||||||
|
|
||||||
StartEntitySync();
|
StartEntitySync();
|
||||||
|
|
||||||
MyModAPIHelper.Initialize();
|
MyModAPIHelper.Initialize();
|
||||||
@@ -321,6 +325,21 @@ namespace SeamlessClientPlugin.SeamlessTransfer
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void UpdateWorldGenerator()
|
||||||
|
{
|
||||||
|
//This will re-init the MyProceduralWorldGenerator. (Not doing this will result in asteroids not rendering in properly)
|
||||||
|
|
||||||
|
//This shoud never be null
|
||||||
|
var Generator = MySession.Static.GetComponent<MyProceduralWorldGenerator>();
|
||||||
|
|
||||||
|
//Force component to unload
|
||||||
|
Patches.UnloadProceduralWorldGenerator.Invoke(Generator, null);
|
||||||
|
|
||||||
|
//Force component to reload, re-syncing settings and seeds to the destination server
|
||||||
|
Generator.LoadData();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void UnloadCurrentServer()
|
private void UnloadCurrentServer()
|
||||||
{
|
{
|
||||||
|
@@ -3,6 +3,7 @@ using Sandbox.Engine.Multiplayer;
|
|||||||
using Sandbox.Engine.Networking;
|
using Sandbox.Engine.Networking;
|
||||||
using Sandbox.Game.Multiplayer;
|
using Sandbox.Game.Multiplayer;
|
||||||
using Sandbox.Game.World;
|
using Sandbox.Game.World;
|
||||||
|
using Sandbox.Game.World.Generator;
|
||||||
using Sandbox.Graphics.GUI;
|
using Sandbox.Graphics.GUI;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -66,6 +67,9 @@ namespace SeamlessClientPlugin.SeamlessTransfer
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* WorldGenerator */
|
||||||
|
public static MethodInfo UnloadProceduralWorldGenerator;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void GetPatches()
|
public static void GetPatches()
|
||||||
@@ -101,6 +105,8 @@ namespace SeamlessClientPlugin.SeamlessTransfer
|
|||||||
LoadMembersFromWorld = GetMethod(typeof(MySession), "LoadMembersFromWorld", BindingFlags.NonPublic | BindingFlags.Instance);
|
LoadMembersFromWorld = GetMethod(typeof(MySession), "LoadMembersFromWorld", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||||
LoadMultiplayer = GetMethod(typeof(MySession), "LoadMultiplayer", BindingFlags.Static | BindingFlags.NonPublic);
|
LoadMultiplayer = GetMethod(typeof(MySession), "LoadMultiplayer", BindingFlags.Static | BindingFlags.NonPublic);
|
||||||
SendPlayerData = GetMethod(ClientType, "SendPlayerData", BindingFlags.Instance | BindingFlags.NonPublic);
|
SendPlayerData = GetMethod(ClientType, "SendPlayerData", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||||
|
UnloadProceduralWorldGenerator = GetMethod(typeof(MyProceduralWorldGenerator), "UnloadData", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||||
|
|
||||||
|
|
||||||
MethodInfo ConnectToServer = GetMethod(typeof(MyGameService), "ConnectToServer", BindingFlags.Static | BindingFlags.Public);
|
MethodInfo ConnectToServer = GetMethod(typeof(MyGameService), "ConnectToServer", BindingFlags.Static | BindingFlags.Public);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user