Fix stuff?

This commit is contained in:
Aaro Varis
2025-03-10 01:54:27 +02:00
parent f9db5be09b
commit 00f0a33a47
9 changed files with 49 additions and 6 deletions

View File

@@ -42,7 +42,7 @@ namespace BoneSync.Networking.Messages
public override void Execute()
{
MelonLogger.Msg("Got PlugSyncMessage " + messageData.plugSyncId + ":" + messageData.plugIndex + " " + messageData.socketSyncId + ":" + messageData.socketIndex);
//MelonLogger.Msg("Got PlugSyncMessage " + messageData.plugSyncId + ":" + messageData.plugIndex + " " + messageData.socketSyncId + ":" + messageData.socketIndex);
Syncable plugSyncable = ObjectSyncCache.GetSyncable(messageData.plugSyncId);
Syncable socketSyncable = ObjectSyncCache.GetSyncable(messageData.socketSyncId);
@@ -76,7 +76,7 @@ namespace BoneSync.Networking.Messages
return;
}
MelonLogger.Msg("Inserting networked plug");
//MelonLogger.Msg("Inserting networked plug");
plug.SafeInsert(socket);
}

View File

@@ -2,6 +2,7 @@
using BoneSync.Networking.Messages;
using BoneSync.Sync;
using Facepunch.Steamworks;
using MelonLoader;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -145,6 +146,7 @@ namespace BoneSync.Networking
{
bool addToQueue = networkMessage.GetCatchupOrder() > 0;
if (!addToQueue) return false;
MelonLogger.Msg("Adding packet to queue for scene " + packet._packetInfo.sceneIndex);
EnsureQueueForScene(packet._packetInfo.sceneIndex);
_packetQueues[packet._packetInfo.sceneIndex].Enqueue(networkMessage);
return true;
@@ -174,6 +176,10 @@ namespace BoneSync.Networking
NetworkMessage networkMessage = queue.Dequeue();
networkMessage.Execute();
}
if (processed > 0)
{
MelonLogger.Msg("Processed " + processed + " queued packets for scene " + sceneIndex);
}
}
public byte[] Data => _dataBytes;

View File

@@ -54,7 +54,7 @@ namespace BoneSync.Patching
byte plugId = plugSyncable.GetPlugId(plug);
byte socketId = socketSyncable != null ? socketSyncable.GetSocketId(socket) : byte.MaxValue;
MelonLogger.Msg("AlignPlug state:" + plug.transform.GetPath() + " Socket:" + socket?.transform?.GetPath() + " PlugID:" + plugId + " SocketID:" + socketId);
//MelonLogger.Msg("AlignPlug state:" + plug.transform.GetPath() + " Socket:" + socket?.transform?.GetPath() + " PlugID:" + plugId + " SocketID:" + socketId);
if (!plugSyncable.isOwner) return;

View File

@@ -127,6 +127,7 @@ namespace BoneSync.Patching
}
// SceneZone and PlayerTrigger patches are based on the ones from entanglement mod
/*
[HarmonyPatch(typeof(SceneZone))]
public static class SceneZonePatch
{
@@ -185,5 +186,5 @@ namespace BoneSync.Patching
return true;
}
}
}*/
}

View File

@@ -16,6 +16,7 @@ namespace BoneSync.Sync.Components
private void TrySendAISync()
{
if (!Registered) return;
if (!isOwner) return;
if (!aiBrain) return;
if (Time.realtimeSinceStartup - _lastAISyncTime > 1 / AI_SYNC_FPS)

View File

@@ -156,6 +156,7 @@ namespace BoneSync.Sync.Components
public bool ShouldAutoSync()
{
if (SceneSync.TimeSinceLastSceneChange < 5f) return false; // don't sync if scene just changed, to prevent some weird stuff that happens when a level is loaded
if (InPoolManagerTransform()) return false;
if (!gameObject.activeInHierarchy) return false;
if (poolee && poolee.pool) {

View File

@@ -19,6 +19,11 @@ namespace BoneSync.Sync.Components
_lastSyncTime = Time.realtimeSinceStartup;
ObjectSync.SendObjectSyncMessage(this);
}
private void TrySendObjectSync()
{
if (ShouldSendSync()) SendObjectSync();
}
public IEnumerator SyncCoroutineAsync()
{
MelonLogger.Msg("Running sync coroutine for: " + transform.GetPath());
@@ -26,7 +31,9 @@ namespace BoneSync.Sync.Components
_syncCoroutineRunning = true;
while (isOwner)
{
if (ShouldSendSync()) SendObjectSync();
TrySendAISync();
TrySendObjectSync();
//TrySendPlugSync();
yield return new WaitForSeconds(!Registered ? 1 : 1 / SYNC_FPS);
}
_syncCoroutineRunning = false;

View File

@@ -6,6 +6,7 @@ using System.Threading.Tasks;
using UnityEngine;
using MelonLoader;
using StressLevelZero.Interaction;
using BoneSync.Patching;
namespace BoneSync.Sync.Components
{
@@ -64,6 +65,30 @@ namespace BoneSync.Sync.Components
}
public partial class Syncable : MonoBehaviour
{
private float _lastPlugSyncTime;
private const float PLUG_SYNC_FPS = 1f;
private void TrySendPlugSync()
{
if (!Registered) return;
if (!isOwner) return;
if (Time.realtimeSinceStartup - _lastPlugSyncTime > 1 / PLUG_SYNC_FPS)
{
_SendPlugSync();
}
}
private void _SendPlugSync()
{
if (!isOwner) return;
if (!Registered) return;
foreach (AlignPlug plug in plugs)
{
if (!plug) continue;
Socket socket = plug.GetSocket();
AlignPlugPatches.OnPlugSocketChange(plug, socket);
_lastPlugSyncTime = Time.realtimeSinceStartup;
}
}
public void EjectAllPlugs(bool force = false)
{

View File

@@ -17,7 +17,8 @@ namespace BoneSync.Sync
private static List<Scene> scenes = new List<Scene>();
private static string _currentSceneName;
private static int _currentSceneIndex;
private static float _lastSceneChangeTime;
public static float TimeSinceLastSceneChange => Time.realtimeSinceStartup - _lastSceneChangeTime;
public static int CurrentSceneIndex => _currentSceneIndex;
public static string CurrentSceneDisplayName
@@ -69,6 +70,7 @@ namespace BoneSync.Sync
public static void OnSceneInit(int buildIndex)
{
Scene scene = SceneManager.GetSceneByBuildIndex(buildIndex);
_lastSceneChangeTime = Time.realtimeSinceStartup;
_currentSceneIndex = buildIndex;
string SceneName = scene.name;
_currentSceneName = SceneName;