Fix stuff?
This commit is contained in:
@@ -42,7 +42,7 @@ namespace BoneSync.Networking.Messages
|
|||||||
|
|
||||||
public override void Execute()
|
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 plugSyncable = ObjectSyncCache.GetSyncable(messageData.plugSyncId);
|
||||||
Syncable socketSyncable = ObjectSyncCache.GetSyncable(messageData.socketSyncId);
|
Syncable socketSyncable = ObjectSyncCache.GetSyncable(messageData.socketSyncId);
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ namespace BoneSync.Networking.Messages
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MelonLogger.Msg("Inserting networked plug");
|
//MelonLogger.Msg("Inserting networked plug");
|
||||||
|
|
||||||
plug.SafeInsert(socket);
|
plug.SafeInsert(socket);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using BoneSync.Networking.Messages;
|
using BoneSync.Networking.Messages;
|
||||||
using BoneSync.Sync;
|
using BoneSync.Sync;
|
||||||
using Facepunch.Steamworks;
|
using Facepunch.Steamworks;
|
||||||
|
using MelonLoader;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -145,6 +146,7 @@ namespace BoneSync.Networking
|
|||||||
{
|
{
|
||||||
bool addToQueue = networkMessage.GetCatchupOrder() > 0;
|
bool addToQueue = networkMessage.GetCatchupOrder() > 0;
|
||||||
if (!addToQueue) return false;
|
if (!addToQueue) return false;
|
||||||
|
MelonLogger.Msg("Adding packet to queue for scene " + packet._packetInfo.sceneIndex);
|
||||||
EnsureQueueForScene(packet._packetInfo.sceneIndex);
|
EnsureQueueForScene(packet._packetInfo.sceneIndex);
|
||||||
_packetQueues[packet._packetInfo.sceneIndex].Enqueue(networkMessage);
|
_packetQueues[packet._packetInfo.sceneIndex].Enqueue(networkMessage);
|
||||||
return true;
|
return true;
|
||||||
@@ -174,6 +176,10 @@ namespace BoneSync.Networking
|
|||||||
NetworkMessage networkMessage = queue.Dequeue();
|
NetworkMessage networkMessage = queue.Dequeue();
|
||||||
networkMessage.Execute();
|
networkMessage.Execute();
|
||||||
}
|
}
|
||||||
|
if (processed > 0)
|
||||||
|
{
|
||||||
|
MelonLogger.Msg("Processed " + processed + " queued packets for scene " + sceneIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] Data => _dataBytes;
|
public byte[] Data => _dataBytes;
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ namespace BoneSync.Patching
|
|||||||
byte plugId = plugSyncable.GetPlugId(plug);
|
byte plugId = plugSyncable.GetPlugId(plug);
|
||||||
byte socketId = socketSyncable != null ? 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() + " PlugID:" + plugId + " SocketID:" + socketId);
|
//MelonLogger.Msg("AlignPlug state:" + plug.transform.GetPath() + " Socket:" + socket?.transform?.GetPath() + " PlugID:" + plugId + " SocketID:" + socketId);
|
||||||
|
|
||||||
if (!plugSyncable.isOwner) return;
|
if (!plugSyncable.isOwner) return;
|
||||||
|
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ namespace BoneSync.Patching
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SceneZone and PlayerTrigger patches are based on the ones from entanglement mod
|
// SceneZone and PlayerTrigger patches are based on the ones from entanglement mod
|
||||||
|
/*
|
||||||
[HarmonyPatch(typeof(SceneZone))]
|
[HarmonyPatch(typeof(SceneZone))]
|
||||||
public static class SceneZonePatch
|
public static class SceneZonePatch
|
||||||
{
|
{
|
||||||
@@ -185,5 +186,5 @@ namespace BoneSync.Patching
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ namespace BoneSync.Sync.Components
|
|||||||
|
|
||||||
private void TrySendAISync()
|
private void TrySendAISync()
|
||||||
{
|
{
|
||||||
|
if (!Registered) return;
|
||||||
if (!isOwner) return;
|
if (!isOwner) return;
|
||||||
if (!aiBrain) return;
|
if (!aiBrain) return;
|
||||||
if (Time.realtimeSinceStartup - _lastAISyncTime > 1 / AI_SYNC_FPS)
|
if (Time.realtimeSinceStartup - _lastAISyncTime > 1 / AI_SYNC_FPS)
|
||||||
|
|||||||
@@ -156,6 +156,7 @@ namespace BoneSync.Sync.Components
|
|||||||
|
|
||||||
public bool ShouldAutoSync()
|
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 (InPoolManagerTransform()) return false;
|
||||||
if (!gameObject.activeInHierarchy) return false;
|
if (!gameObject.activeInHierarchy) return false;
|
||||||
if (poolee && poolee.pool) {
|
if (poolee && poolee.pool) {
|
||||||
|
|||||||
@@ -19,6 +19,11 @@ namespace BoneSync.Sync.Components
|
|||||||
_lastSyncTime = Time.realtimeSinceStartup;
|
_lastSyncTime = Time.realtimeSinceStartup;
|
||||||
ObjectSync.SendObjectSyncMessage(this);
|
ObjectSync.SendObjectSyncMessage(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void TrySendObjectSync()
|
||||||
|
{
|
||||||
|
if (ShouldSendSync()) SendObjectSync();
|
||||||
|
}
|
||||||
public IEnumerator SyncCoroutineAsync()
|
public IEnumerator SyncCoroutineAsync()
|
||||||
{
|
{
|
||||||
MelonLogger.Msg("Running sync coroutine for: " + transform.GetPath());
|
MelonLogger.Msg("Running sync coroutine for: " + transform.GetPath());
|
||||||
@@ -26,7 +31,9 @@ namespace BoneSync.Sync.Components
|
|||||||
_syncCoroutineRunning = true;
|
_syncCoroutineRunning = true;
|
||||||
while (isOwner)
|
while (isOwner)
|
||||||
{
|
{
|
||||||
if (ShouldSendSync()) SendObjectSync();
|
TrySendAISync();
|
||||||
|
TrySendObjectSync();
|
||||||
|
//TrySendPlugSync();
|
||||||
yield return new WaitForSeconds(!Registered ? 1 : 1 / SYNC_FPS);
|
yield return new WaitForSeconds(!Registered ? 1 : 1 / SYNC_FPS);
|
||||||
}
|
}
|
||||||
_syncCoroutineRunning = false;
|
_syncCoroutineRunning = false;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using MelonLoader;
|
using MelonLoader;
|
||||||
using StressLevelZero.Interaction;
|
using StressLevelZero.Interaction;
|
||||||
|
using BoneSync.Patching;
|
||||||
|
|
||||||
namespace BoneSync.Sync.Components
|
namespace BoneSync.Sync.Components
|
||||||
{
|
{
|
||||||
@@ -64,6 +65,30 @@ namespace BoneSync.Sync.Components
|
|||||||
}
|
}
|
||||||
public partial class Syncable : MonoBehaviour
|
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)
|
public void EjectAllPlugs(bool force = false)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ namespace BoneSync.Sync
|
|||||||
private static List<Scene> scenes = new List<Scene>();
|
private static List<Scene> scenes = new List<Scene>();
|
||||||
private static string _currentSceneName;
|
private static string _currentSceneName;
|
||||||
private static int _currentSceneIndex;
|
private static int _currentSceneIndex;
|
||||||
|
private static float _lastSceneChangeTime;
|
||||||
|
public static float TimeSinceLastSceneChange => Time.realtimeSinceStartup - _lastSceneChangeTime;
|
||||||
public static int CurrentSceneIndex => _currentSceneIndex;
|
public static int CurrentSceneIndex => _currentSceneIndex;
|
||||||
|
|
||||||
public static string CurrentSceneDisplayName
|
public static string CurrentSceneDisplayName
|
||||||
@@ -69,6 +70,7 @@ namespace BoneSync.Sync
|
|||||||
public static void OnSceneInit(int buildIndex)
|
public static void OnSceneInit(int buildIndex)
|
||||||
{
|
{
|
||||||
Scene scene = SceneManager.GetSceneByBuildIndex(buildIndex);
|
Scene scene = SceneManager.GetSceneByBuildIndex(buildIndex);
|
||||||
|
_lastSceneChangeTime = Time.realtimeSinceStartup;
|
||||||
_currentSceneIndex = buildIndex;
|
_currentSceneIndex = buildIndex;
|
||||||
string SceneName = scene.name;
|
string SceneName = scene.name;
|
||||||
_currentSceneName = SceneName;
|
_currentSceneName = SceneName;
|
||||||
|
|||||||
Reference in New Issue
Block a user