Skip to content

Commit 5378d4d

Browse files
fix: ping tool example updates and fixes (#3106)
* fix Fixed issue with negative ping time calculations. Fixed issue with potential exception on exiting. Fixed issue with serverhostclient identifier text not displaying in the render view. * update Includes some general updates to the project. Updated to ExtendedNetworkManager that combines the NetworkManager, NetworkManagerHelper, and DisconnectNotify into a single component. Added PingToolHelper label that provides on-screen directions as to which key to press to toggle the ping tool.
1 parent c2ab328 commit 5378d4d

File tree

11 files changed

+333
-202
lines changed

11 files changed

+333
-202
lines changed

Examples/PingTool/Assets/DefaultNetworkPrefabs.asset

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ MonoBehaviour:
1515
IsDefault: 1
1616
List:
1717
- Override: 0
18-
Prefab: {fileID: 2522762726852386808, guid: 380c984d34fc8664c8f53fc1d8733a25, type: 3}
18+
Prefab: {fileID: 8921789205124766477, guid: 89b57e576a8d47643b2dbd45b1f8cab1, type: 3}
1919
SourcePrefabToOverride: {fileID: 0}
2020
SourceHashToOverride: 0
2121
OverridingTargetPrefab: {fileID: 0}
2222
- Override: 0
23-
Prefab: {fileID: 8921789205124766477, guid: 89b57e576a8d47643b2dbd45b1f8cab1, type: 3}
23+
Prefab: {fileID: 4874009706086500699, guid: 3f5e8ae5613c82a4f9f859c11a4f2e09, type: 3}
2424
SourcePrefabToOverride: {fileID: 0}
2525
SourceHashToOverride: 0
2626
OverridingTargetPrefab: {fileID: 0}

Examples/PingTool/Assets/PingTool/PingTool.cs

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public class PingTool : NetworkBehaviour
2828
public bool StartWithNetStateMonitorHidden = true;
2929
public KeyCode NetStatsMonitorToggle = KeyCode.Tab;
3030
#endif
31+
public Text PingRateValue;
32+
public Text PingToolHelp;
3133
public bool EnableConsoleLogging = true;
3234

3335
public UnityEvent<ulong, ClientRtt> LogMessage;
@@ -65,7 +67,7 @@ public void Reset()
6567
private Dictionary<ulong, float> m_NextClientPingTime = new Dictionary<ulong, float>();
6668
private Dictionary<ulong, Coroutine> m_ClientUpdateRoutines = new Dictionary<ulong, Coroutine>();
6769
private Slider m_Slider;
68-
private Text m_PingRateValue;
70+
6971
private Canvas m_PingUICanvas;
7072
private bool m_PingRateUpdated;
7173
private float m_LastUpdatedTime;
@@ -93,7 +95,6 @@ public ClientRtt GetClientRtt(ulong clientID)
9395
private void Awake()
9496
{
9597
m_Slider = GetComponentInChildren<Slider>();
96-
m_PingRateValue = GetComponentInChildren<Text>();
9798
m_PingUICanvas = GetComponentInChildren<Canvas>();
9899
m_PingUICanvas.gameObject.SetActive(false);
99100
#if MULTIPLAYER_TOOLS
@@ -102,6 +103,11 @@ private void Awake()
102103
m_NetStatsMonitor.Visible = false;
103104
}
104105
#endif
106+
107+
if (PingToolHelp)
108+
{
109+
PingToolHelp.text = PingToolHelp.text.Replace("<>", $"<{NetStatsMonitorToggle}>");
110+
}
105111
}
106112

107113
protected override void OnNetworkPreSpawn(ref NetworkManager networkManager)
@@ -156,11 +162,19 @@ public override void OnNetworkSpawn()
156162
InitializeAllClients();
157163
NetworkManager.OnConnectionEvent += OnConnectionEvent;
158164
}
165+
UpdatePingRateValue(m_PingRate.Value);
159166

160-
m_PingRateValue.text = $"{m_PingRate.Value}";
161167
base.OnNetworkSpawn();
162168
}
163169

170+
private void UpdatePingRateValue(int value)
171+
{
172+
if (PingRateValue)
173+
{
174+
PingRateValue.text = $"{m_PingRate.Value}";
175+
}
176+
}
177+
164178
protected override void OnOwnershipChanged(ulong previous, ulong current)
165179
{
166180
if (current == NetworkManager.LocalClientId)
@@ -182,7 +196,7 @@ protected override void OnOwnershipChanged(ulong previous, ulong current)
182196
private void OnPingRateChanged(int previous, int current)
183197
{
184198
InitializePingClientTime(OwnerClientId);
185-
m_PingRateValue.text = $"{current}";
199+
UpdatePingRateValue(current);
186200
}
187201

188202
public override void OnNetworkDespawn()
@@ -290,7 +304,7 @@ private void OnPingRateChanged()
290304
if (m_Slider.value != PingRate)
291305
{
292306
PingRate = (int)m_Slider.value;
293-
m_PingRateValue.text = $"{PingRate}";
307+
UpdatePingRateValue(PingRate);
294308
// Flag the last time this value updated for the OwnerMonitorPingRateChange coroutine
295309
m_LastUpdatedTime = Time.realtimeSinceStartup;
296310
m_PingRateUpdated = true;
@@ -377,6 +391,10 @@ private void Update()
377391
if (m_NetStatsMonitor && Input.GetKeyDown(NetStatsMonitorToggle))
378392
{
379393
m_NetStatsMonitor.Visible = !m_NetStatsMonitor.Visible;
394+
if (PingToolHelp)
395+
{
396+
PingToolHelp.gameObject.SetActive(!m_NetStatsMonitor.Visible);
397+
}
380398
}
381399
}
382400
}
@@ -422,12 +440,24 @@ private void InitializeClient(ulong clientId, bool hasEntry)
422440
[Rpc(SendTo.SpecifiedInParams)]
423441
private void PingRpc(float timeSent, RpcParams rpcParams)
424442
{
443+
// Exit early if despawning or shutdown
444+
if (!IsSpawned || NetworkManager == null || !NetworkManager.IsListening || NetworkManager.ShutdownInProgress)
445+
{
446+
return;
447+
}
448+
425449
PongRpc(Mathf.Abs(NetworkManager.ServerTime.TimeAsFloat - timeSent), RpcTarget.Single(rpcParams.Receive.SenderClientId, RpcTargetUse.Temp));
426450
}
427451

428452
[Rpc(SendTo.SpecifiedInParams)]
429453
private void PongRpc(float timeDelta, RpcParams rpcParams)
430454
{
455+
// Exit early if despawning or shutdown
456+
if (!IsSpawned || NetworkManager == null || !NetworkManager.IsListening || NetworkManager.ShutdownInProgress)
457+
{
458+
return;
459+
}
460+
431461
UpdateClientRTT(rpcParams.Receive.SenderClientId, timeDelta);
432462
}
433463

@@ -448,7 +478,7 @@ private void UpdateClientRTT(ulong clientId, float timeDelta)
448478
}
449479

450480
var pingEntry = m_ClientPingQueue[clientId];
451-
var ping = timeDelta - (latencyToTimeServer * 0.001f);
481+
var ping = Mathf.Abs(timeDelta - (latencyToTimeServer * 0.001f));
452482
pingEntry.PingTime += ping;
453483
pingEntry.UTP_RTT += currentRTT;
454484
pingEntry.ReceivedPongs++;

Examples/PingTool/Assets/PingTool/PingTool.prefab

Lines changed: 99 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ RectTransform:
3131
m_LocalScale: {x: 0, y: 0, z: 0}
3232
m_ConstrainProportionsScale: 0
3333
m_Children:
34+
- {fileID: 1251000097366145441}
3435
- {fileID: 6277513074320060017}
3536
- {fileID: 4052611471472719404}
3637
- {fileID: 4428071759692496771}
@@ -543,7 +544,7 @@ MonoBehaviour:
543544
m_Name:
544545
m_EditorClassIdentifier:
545546
GlobalObjectIdHash: 1175888021
546-
InScenePlacedSourceGlobalObjectIdHash: 0
547+
InScenePlacedSourceGlobalObjectIdHash: 290216032
547548
DeferredDespawnTick: 0
548549
Ownership: 2
549550
AlwaysReplicateAsRoot: 0
@@ -553,6 +554,8 @@ MonoBehaviour:
553554
SpawnWithObservers: 1
554555
DontDestroyWithOwner: 1
555556
AutoObjectParentSync: 1
557+
SyncOwnerTransformWhenParented: 1
558+
AllowOwnerToParent: 0
556559
--- !u!114 &2592079281344418938
557560
MonoBehaviour:
558561
m_ObjectHideFlags: 0
@@ -565,14 +568,108 @@ MonoBehaviour:
565568
m_Script: {fileID: 11500000, guid: 1466a9d81cf83ff45bca7014cb93c010, type: 3}
566569
m_Name:
567570
m_EditorClassIdentifier:
571+
ShowTopMostFoldoutHeaderGroup: 1
568572
PingRate: 2
569573
StartWithNetStateMonitorHidden: 1
570574
NetStatsMonitorToggle: 9
575+
PingRateValue: {fileID: 3165861447957584369}
576+
PingToolHelp: {fileID: 7873216060197180850}
571577
EnableConsoleLogging: 0
572578
LogMessage:
573579
m_PersistentCalls:
574-
m_Calls: []
580+
m_Calls:
581+
- m_Target: {fileID: 0}
582+
m_TargetAssemblyTypeName: NetworkManagerHelper, Assembly-CSharp
583+
m_MethodName: LogPingToolMessage
584+
m_Mode: 0
585+
m_Arguments:
586+
m_ObjectArgument: {fileID: 0}
587+
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
588+
m_IntArgument: 0
589+
m_FloatArgument: 0
590+
m_StringArgument:
591+
m_BoolArgument: 0
592+
m_CallState: 2
575593
m_NetStatsMonitor: {fileID: 1263430958893551039}
594+
--- !u!1 &6370153036591290436
595+
GameObject:
596+
m_ObjectHideFlags: 0
597+
m_CorrespondingSourceObject: {fileID: 0}
598+
m_PrefabInstance: {fileID: 0}
599+
m_PrefabAsset: {fileID: 0}
600+
serializedVersion: 6
601+
m_Component:
602+
- component: {fileID: 1251000097366145441}
603+
- component: {fileID: 277549501682696586}
604+
- component: {fileID: 7873216060197180850}
605+
m_Layer: 5
606+
m_Name: PingToolHelper
607+
m_TagString: Untagged
608+
m_Icon: {fileID: 0}
609+
m_NavMeshLayer: 0
610+
m_StaticEditorFlags: 0
611+
m_IsActive: 1
612+
--- !u!224 &1251000097366145441
613+
RectTransform:
614+
m_ObjectHideFlags: 0
615+
m_CorrespondingSourceObject: {fileID: 0}
616+
m_PrefabInstance: {fileID: 0}
617+
m_PrefabAsset: {fileID: 0}
618+
m_GameObject: {fileID: 6370153036591290436}
619+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
620+
m_LocalPosition: {x: 0, y: 0, z: 0}
621+
m_LocalScale: {x: 1, y: 1, z: 1}
622+
m_ConstrainProportionsScale: 0
623+
m_Children: []
624+
m_Father: {fileID: 8751044705753477979}
625+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
626+
m_AnchorMin: {x: 0, y: 0}
627+
m_AnchorMax: {x: 0, y: 0}
628+
m_AnchoredPosition: {x: 132.5, y: 25.600006}
629+
m_SizeDelta: {x: 260, y: 24}
630+
m_Pivot: {x: 0.5, y: 0.5}
631+
--- !u!222 &277549501682696586
632+
CanvasRenderer:
633+
m_ObjectHideFlags: 0
634+
m_CorrespondingSourceObject: {fileID: 0}
635+
m_PrefabInstance: {fileID: 0}
636+
m_PrefabAsset: {fileID: 0}
637+
m_GameObject: {fileID: 6370153036591290436}
638+
m_CullTransparentMesh: 1
639+
--- !u!114 &7873216060197180850
640+
MonoBehaviour:
641+
m_ObjectHideFlags: 0
642+
m_CorrespondingSourceObject: {fileID: 0}
643+
m_PrefabInstance: {fileID: 0}
644+
m_PrefabAsset: {fileID: 0}
645+
m_GameObject: {fileID: 6370153036591290436}
646+
m_Enabled: 1
647+
m_EditorHideFlags: 0
648+
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
649+
m_Name:
650+
m_EditorClassIdentifier:
651+
m_Material: {fileID: 0}
652+
m_Color: {r: 1, g: 0.4606132, b: 0, a: 1}
653+
m_RaycastTarget: 1
654+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
655+
m_Maskable: 1
656+
m_OnCullStateChanged:
657+
m_PersistentCalls:
658+
m_Calls: []
659+
m_FontData:
660+
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
661+
m_FontSize: 18
662+
m_FontStyle: 1
663+
m_BestFit: 0
664+
m_MinSize: 0
665+
m_MaxSize: 40
666+
m_Alignment: 4
667+
m_AlignByGeometry: 0
668+
m_RichText: 1
669+
m_HorizontalOverflow: 0
670+
m_VerticalOverflow: 0
671+
m_LineSpacing: 1
672+
m_Text: Hit <TAB> To Show PingTool
576673
--- !u!1 &7349017088681708274
577674
GameObject:
578675
m_ObjectHideFlags: 0

0 commit comments

Comments
 (0)