NetworkManagerTester working
This commit is contained in:
@@ -6,6 +6,7 @@ using UnityEngine;
|
||||
using UnityEngine.Android;
|
||||
using VRC.SDK3.UdonNetworkCalling;
|
||||
using VRC.SDKBase;
|
||||
using VRC.SDKBase.Midi;
|
||||
using VRC.Udon.Common;
|
||||
|
||||
namespace Marro.PacManUdon
|
||||
@@ -215,11 +216,23 @@ namespace Marro.PacManUdon
|
||||
#endregion
|
||||
|
||||
#region Public fields
|
||||
private bool ready = false;
|
||||
/// <summary>
|
||||
/// Whether this <see cref="NetworkManager"/> is ready to transmit or receive data.
|
||||
/// If false, networking is disabled and this <see cref="NetworkManager"/> acts as a pass-through.
|
||||
/// </summary>
|
||||
public bool Ready { get; private set; } = false;
|
||||
public bool Ready
|
||||
{
|
||||
get => ready;
|
||||
private set
|
||||
{
|
||||
ready = value;
|
||||
if (DebugImageToIndicateReady != null)
|
||||
{
|
||||
DebugImageToIndicateReady.SetFloat("Color", value ? 1 : 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -310,6 +323,8 @@ namespace Marro.PacManUdon
|
||||
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Found {syncedUpdateSubscribers.Length} {nameof(SyncedObject)} in children of {root.name}.");
|
||||
|
||||
initialized = true;
|
||||
|
||||
Reset();
|
||||
}
|
||||
|
||||
private bool TryGetNetworkEventSubscribers(out SyncedObject[][] result)
|
||||
@@ -365,7 +380,14 @@ namespace Marro.PacManUdon
|
||||
return;
|
||||
}
|
||||
|
||||
IsOwner = Networking.IsOwner(gameObject);
|
||||
if (tester == null)
|
||||
{
|
||||
IsOwner = Networking.IsOwner(gameObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
IsOwner = tester.ShouldBeOwner(this);
|
||||
}
|
||||
|
||||
ClearBuffer();
|
||||
|
||||
@@ -597,6 +619,10 @@ namespace Marro.PacManUdon
|
||||
{
|
||||
RequestSerialization();
|
||||
serializationRequested = true;
|
||||
if (tester != null)
|
||||
{
|
||||
tester.RequestSerializationTest();
|
||||
}
|
||||
}
|
||||
|
||||
[NetworkCallable]
|
||||
@@ -623,7 +649,7 @@ namespace Marro.PacManUdon
|
||||
|
||||
private void ProgressPingTime()
|
||||
{
|
||||
if (eventsQueueIndex > 0
|
||||
if (eventsQueueIndex > 0 && !serializationRequested
|
||||
&& internalTime - lastEventTransmissionTime >= pingDelay)
|
||||
{
|
||||
RequestSerializationForEvents();
|
||||
@@ -651,16 +677,19 @@ namespace Marro.PacManUdon
|
||||
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Serializing {eventsQueueIndex} event(s), eventTransmissionHistory is now {ArrayToString(eventTransmissionHistory)} with index {eventTransmissionHistoryIndex}");
|
||||
}
|
||||
|
||||
public override void OnPostSerialization(SerializationResult result)
|
||||
public override void OnPostSerialization(SerializationResult result) => OnPostSerializationInternal(result.success, result.byteCount);
|
||||
|
||||
// Version of OnPostSerialization which does not require instantiating SerializationResult, so that it can be called for debugging purposes.
|
||||
public void OnPostSerializationInternal(bool success, int byteCount)
|
||||
{
|
||||
if (!Ready || !IsOwner || networkedData.Length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!result.success)
|
||||
if (!success)
|
||||
{
|
||||
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Serialization failed! Tried to send {result.byteCount} bytes.");
|
||||
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Serialization failed! Tried to send {byteCount} bytes.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -695,6 +724,11 @@ namespace Marro.PacManUdon
|
||||
}
|
||||
|
||||
SendCustomNetworkEvent(VRC.Udon.Common.Interfaces.NetworkEventTarget.Owner, "RequestEventReceived", eventType);
|
||||
|
||||
if (tester != null)
|
||||
{
|
||||
tester.RequestEvent(eventType);
|
||||
}
|
||||
}
|
||||
|
||||
private void StoreIncomingData()
|
||||
@@ -760,7 +794,7 @@ namespace Marro.PacManUdon
|
||||
|
||||
QueueEventInBuffer(@event);
|
||||
|
||||
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)} Queued event with id {eventId}");
|
||||
//Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)} Queued event with id {eventId}");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1139,6 +1173,27 @@ namespace Marro.PacManUdon
|
||||
/// </summary>
|
||||
[SerializeField] private Animator DebugImageToIndicateSynced;
|
||||
|
||||
/// <summary>
|
||||
/// An animator which visualizes whether the NetworkManager is synced.
|
||||
/// </summary>
|
||||
[SerializeField] private Animator DebugImageToIndicateReady;
|
||||
|
||||
private NetworkManagerTester tester;
|
||||
public void SetNetworkManagerTester(NetworkManagerTester tester)
|
||||
{
|
||||
this.tester = tester;
|
||||
}
|
||||
|
||||
public byte[] NetworkedData
|
||||
{
|
||||
get => networkedData;
|
||||
set => networkedData = value;
|
||||
}
|
||||
|
||||
public bool SerializationRequested => serializationRequested;
|
||||
|
||||
public void SetIsOwner(bool isOwner) => IsOwner = isOwner;
|
||||
|
||||
public void DoFullSync()
|
||||
{
|
||||
SendEventSoon(NetworkEventType.FullSync);
|
||||
|
||||
Reference in New Issue
Block a user