Mag sync epicly working
This commit is contained in:
@@ -14,7 +14,6 @@ using static MelonLoader.MelonLogger;
|
||||
namespace BoneSync.Patching
|
||||
{
|
||||
|
||||
[HarmonyPatch(typeof(AlignPlug))]
|
||||
public static class AlignPlugPatches
|
||||
{
|
||||
public static void OnPlugSocketChange(AlignPlug plug, Socket socket)
|
||||
@@ -40,19 +39,22 @@ namespace BoneSync.Patching
|
||||
if (!socketSyncable)
|
||||
{
|
||||
MelonLogger.Warning("SocketSyncable not found");
|
||||
} else
|
||||
{
|
||||
socketSyncable.FindAndUpdateComponents();
|
||||
}
|
||||
|
||||
plugSyncable.FindAndUpdateComponents();
|
||||
|
||||
if (socketSyncable && socketSyncable.isOwner && !plugSyncable.isOwner)
|
||||
|
||||
if (socketSyncable != null && socketSyncable.isOwner && !plugSyncable.isOwner)
|
||||
{
|
||||
plugSyncable.TryBecomeOwner(true); // forcefully take ownership of the plug
|
||||
}
|
||||
|
||||
byte plugId = plugSyncable.GetPlugId(plug);
|
||||
byte socketId = socketSyncable ? socketSyncable.GetSocketId(socket) : byte.MaxValue;
|
||||
byte socketId = socketSyncable != null ? socketSyncable.GetSocketId(socket) : byte.MaxValue;
|
||||
|
||||
MelonLogger.Msg("AlignPlug state: " + plug.transform.GetPath() + " Socket: " + socket.transform.GetPath() + " Plug ID: " + plugId + " Socket ID: " + socketId);
|
||||
MelonLogger.Msg("AlignPlug state:" + plug.transform.GetPath() + " Socket:" + socket?.transform?.GetPath() + " PlugID:" + plugId + " SocketID:" + socketId);
|
||||
|
||||
if (!plugSyncable.isOwner) return;
|
||||
|
||||
@@ -60,7 +62,7 @@ namespace BoneSync.Patching
|
||||
{
|
||||
plugSyncId = plugSyncable.GetSyncId(),
|
||||
plugIndex = plugId,
|
||||
socketSyncId = socketSyncable ? socketSyncable.GetSyncId() : ushort.MinValue,
|
||||
socketSyncId = socketSyncable != null ? socketSyncable.GetSyncId() : ushort.MinValue,
|
||||
socketIndex = socketId
|
||||
};
|
||||
|
||||
|
||||
@@ -41,8 +41,20 @@ namespace BoneSync.Sync.Components
|
||||
public static bool SafeInsert(this AlignPlug plug, Socket socket)
|
||||
{
|
||||
if (!socket) return false;
|
||||
if (socket.LockedPlug) return false;
|
||||
if (plug.GetSocket() && plug._lastSocket != socket)
|
||||
Plug lockedPlug = socket.LockedPlug;
|
||||
if (lockedPlug && lockedPlug != plug)
|
||||
{
|
||||
AlignPlug alignPlug = lockedPlug.GetComponent<AlignPlug>();
|
||||
if (alignPlug)
|
||||
{
|
||||
alignPlug.ForceEject();
|
||||
} else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (plug.GetSocket() != socket)
|
||||
{
|
||||
plug.ForceEject();
|
||||
}
|
||||
|
||||
@@ -128,8 +128,10 @@ namespace BoneSync.Sync
|
||||
Syncable subSyncable = subSyncables[i];
|
||||
if (subSyncable == syncable) continue;
|
||||
bool isRegistered = subSyncable.Registered;
|
||||
MelonLogger.Msg("Discarding subSyncable: " + subSyncable.transform.GetPath() + " registered:" + isRegistered);
|
||||
if (isRegistered) continue;
|
||||
bool isPlugged = subSyncable.IsPlugged();
|
||||
|
||||
MelonLogger.Msg("Discarding subSyncable: " + subSyncable.transform.GetPath() + " registered:" + isRegistered + " plugged:" + isPlugged);
|
||||
if (isRegistered || isPlugged) continue;
|
||||
subSyncable.DiscardSyncableImmediate(true, false);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user