Working via NetworkManager
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using TMPro;
|
||||
using UdonSharp;
|
||||
@@ -42,9 +41,9 @@ namespace Marro.PacManUdon
|
||||
|
||||
#region Settings
|
||||
/// <summary>
|
||||
/// Objects which are controlled by this <see cref="NetworkManager"/>.
|
||||
/// The root from which this <see cref="NetworkManager"/> will look for <see cref="SyncedObject"/> to control.
|
||||
/// </summary>
|
||||
[SerializeField] private SyncedObject[] syncedObjects;
|
||||
[SerializeField] private GameObject root;
|
||||
/// <summary>
|
||||
/// The delay at which the receiving side replays events.
|
||||
/// </summary>
|
||||
@@ -88,6 +87,11 @@ namespace Marro.PacManUdon
|
||||
#endregion
|
||||
|
||||
#region Private attributes
|
||||
/// <summary>
|
||||
/// Objects which are controlled by this <see cref="NetworkManager"/>.
|
||||
/// </summary>
|
||||
private SyncedObject[] syncedObjects;
|
||||
|
||||
/// <summary>
|
||||
/// Offset from system time to network time, including delay.
|
||||
/// </summary>
|
||||
@@ -176,7 +180,7 @@ namespace Marro.PacManUdon
|
||||
/// <summary>
|
||||
/// Time since the last simulation, in seconds.
|
||||
/// </summary>
|
||||
public float Dt { get; private set; }
|
||||
public float SyncedDeltaTime { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Is the current simulation to prepare for applying a network event?
|
||||
@@ -194,7 +198,12 @@ namespace Marro.PacManUdon
|
||||
#region General
|
||||
public void Awake()
|
||||
{
|
||||
offsetTime = Time.fixedTime;
|
||||
// I would set the instance variable here, but it's somehow null by the time Initialize() is called... Udon moment?
|
||||
var syncedObjects = root.GetComponentsInChildren<SyncedObject>(includeInactive: true);
|
||||
foreach (var obj in syncedObjects)
|
||||
{
|
||||
obj.networkManager = this;
|
||||
}
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
@@ -206,6 +215,10 @@ namespace Marro.PacManUdon
|
||||
return;
|
||||
}
|
||||
|
||||
syncedObjects = root.GetComponentsInChildren<SyncedObject>(includeInactive: true);
|
||||
|
||||
Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) 3 Found {syncedObjects.Length} {nameof(SyncedObject)} in children of {root.name}.");
|
||||
|
||||
SetOwner(Networking.IsOwner(gameObject));
|
||||
|
||||
ClearBuffer();
|
||||
@@ -217,7 +230,7 @@ namespace Marro.PacManUdon
|
||||
offsetTime = Time.fixedTime;
|
||||
internalTime = 0;
|
||||
SyncedTime = 0;
|
||||
Dt = Time.fixedDeltaTime;
|
||||
SyncedDeltaTime = Time.fixedDeltaTime;
|
||||
|
||||
Ready = true;
|
||||
|
||||
@@ -255,8 +268,13 @@ namespace Marro.PacManUdon
|
||||
IsEventUpdate = false;
|
||||
ProgressSyncedTime(internalTime);
|
||||
|
||||
foreach (var obj in syncedObjects)
|
||||
Debug.Log($"{nameof(PacManUdon)} {nameof(NetworkManager)} syncedObjects: {syncedObjects}");
|
||||
Debug.Log($"{nameof(PacManUdon)} {nameof(NetworkManager)} Starting SyncedUpdate for {syncedObjects.Length} objects.");
|
||||
|
||||
for (int i = 0; i < syncedObjects.Length; i++)
|
||||
{
|
||||
var obj = syncedObjects[i];
|
||||
Debug.Log($"{nameof(PacManUdon)} {nameof(NetworkManager)} SyncedUpdate for {obj.gameObject.name}");
|
||||
obj.SyncedUpdate();
|
||||
}
|
||||
}
|
||||
@@ -701,11 +719,11 @@ namespace Marro.PacManUdon
|
||||
private void ProgressSyncedTime(float newTime)
|
||||
{
|
||||
//Debug.Log($"({nameof(PacManUdon)} {nameof(NetworkManager)}) updating SyncedTime from {SyncedTime} to {newTime}");
|
||||
Dt = newTime - SyncedTime;
|
||||
SyncedDeltaTime = newTime - SyncedTime;
|
||||
|
||||
if (Dt < 0)
|
||||
if (SyncedDeltaTime < 0)
|
||||
{
|
||||
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Negative Dt: {Dt}! Going from {SyncedTime} to {newTime}, IsEventUpdate: {IsEventUpdate}");
|
||||
Debug.LogWarning($"({nameof(PacManUdon)} {nameof(NetworkManager)}) Negative Dt: {SyncedDeltaTime}! Going from {SyncedTime} to {newTime}, IsEventUpdate: {IsEventUpdate}");
|
||||
}
|
||||
|
||||
SyncedTime = newTime;
|
||||
@@ -877,7 +895,7 @@ namespace Marro.PacManUdon
|
||||
$"offsetTime: {offsetTime}\n" +
|
||||
$"internalTime: {internalTime}\n" +
|
||||
$"SyncedTime: {SyncedTime}\n" +
|
||||
$"Dt: {Dt}\n" +
|
||||
$"Dt: {SyncedDeltaTime}\n" +
|
||||
$"BufferIndex: {eventsQueueIndex}\n" +
|
||||
$"BufferIndexHistory: {ArrayToString(eventTransmissionHistory)}\n" +
|
||||
$"\n";
|
||||
|
||||
Reference in New Issue
Block a user