NAK_CVR_Mods/RelativeSync/Main.cs
2024-05-29 13:41:11 -05:00

48 lines
No EOL
1.4 KiB
C#

using MelonLoader;
using NAK.RelativeSync.Networking;
using NAK.RelativeSync.Patches;
namespace NAK.RelativeSync;
public class RelativeSyncMod : MelonMod
{
internal static MelonLogger.Instance Logger;
public override void OnInitializeMelon()
{
Logger = LoggerInstance;
ModNetwork.Subscribe();
ModSettings.Initialize();
// Experimental sync hack
ApplyPatches(typeof(CVRSpawnablePatches));
// Experimental no interpolation on Better Better Character Controller
ApplyPatches(typeof(BetterBetterCharacterControllerPatches));
// Send relative sync update after network root data update
ApplyPatches(typeof(NetworkRootDataUpdatePatches));
// Add components if missing (for relative sync monitor and controller)
ApplyPatches(typeof(PlayerSetupPatches));
ApplyPatches(typeof(PuppetMasterPatches));
// Add components if missing (for relative sync markers)
ApplyPatches(typeof(CVRSeatPatches));
ApplyPatches(typeof(CVRMovementParentPatches));
}
private void ApplyPatches(Type type)
{
try
{
HarmonyInstance.PatchAll(type);
}
catch (Exception e)
{
LoggerInstance.Msg($"Failed while patching {type.Name}!");
LoggerInstance.Error(e);
}
}
}