Skip to content

Commit 11de374

Browse files
committed
refactored TransportPicker and removed unneeded switch-cases
1 parent ef04dad commit 11de374

File tree

6 files changed

+53
-171
lines changed

6 files changed

+53
-171
lines changed

Assets/BossRoom/Prefabs/NetworkingManager.prefab

Lines changed: 16 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ Transform:
2727
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
2828
m_LocalPosition: {x: 0, y: 0, z: 0}
2929
m_LocalScale: {x: 1, y: 1, z: 1}
30+
m_ConstrainProportionsScale: 0
3031
m_Children: []
3132
m_Father: {fileID: 5436007408952557925}
32-
m_RootOrder: 1
33+
m_RootOrder: 0
3334
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
3435
--- !u!114 &5486862276979889515
3536
MonoBehaviour:
@@ -86,9 +87,10 @@ Transform:
8687
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
8788
m_LocalPosition: {x: 0, y: 0, z: 0}
8889
m_LocalScale: {x: 1, y: 1, z: 1}
90+
m_ConstrainProportionsScale: 0
8991
m_Children: []
9092
m_Father: {fileID: 5436007408952557925}
91-
m_RootOrder: 2
93+
m_RootOrder: 1
9294
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
9395
--- !u!114 &503411709
9496
MonoBehaviour:
@@ -146,8 +148,8 @@ Transform:
146148
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
147149
m_LocalPosition: {x: 0, y: 0, z: 0}
148150
m_LocalScale: {x: 1, y: 1, z: 1}
151+
m_ConstrainProportionsScale: 0
149152
m_Children:
150-
- {fileID: 1861090270400447367}
151153
- {fileID: 347284043}
152154
- {fileID: 503411708}
153155
m_Father: {fileID: 0}
@@ -184,66 +186,55 @@ MonoBehaviour:
184186
NetworkConfig:
185187
ProtocolVersion: 0
186188
NetworkTransport: {fileID: 5486862276979889515}
187-
PlayerPrefab: {fileID: 4927145850774787080, guid: 1d3f5528d25661949890bcd7f47fe81a,
188-
type: 3}
189+
PlayerPrefab: {fileID: 4927145850774787080, guid: 1d3f5528d25661949890bcd7f47fe81a, type: 3}
189190
NetworkPrefabs:
190191
- Override: 0
191-
Prefab: {fileID: 6009713983291384756, guid: 8237adf32a9b6de4892e6febe6b4bdef,
192-
type: 3}
192+
Prefab: {fileID: 6009713983291384756, guid: 8237adf32a9b6de4892e6febe6b4bdef, type: 3}
193193
SourcePrefabToOverride: {fileID: 0}
194194
SourceHashToOverride: 0
195195
OverridingTargetPrefab: {fileID: 0}
196196
- Override: 0
197-
Prefab: {fileID: 3713729372785093424, guid: 6cdd52f1fa2ed34469a487ae6477eded,
198-
type: 3}
197+
Prefab: {fileID: 3713729372785093424, guid: 6cdd52f1fa2ed34469a487ae6477eded, type: 3}
199198
SourcePrefabToOverride: {fileID: 0}
200199
SourceHashToOverride: 0
201200
OverridingTargetPrefab: {fileID: 0}
202201
- Override: 0
203-
Prefab: {fileID: 3688950541947916333, guid: 365e94337fd10fe4ebde1906df413ac7,
204-
type: 3}
202+
Prefab: {fileID: 3688950541947916333, guid: 365e94337fd10fe4ebde1906df413ac7, type: 3}
205203
SourcePrefabToOverride: {fileID: 0}
206204
SourceHashToOverride: 0
207205
OverridingTargetPrefab: {fileID: 0}
208206
- Override: 0
209-
Prefab: {fileID: 2842198241268549130, guid: 30c420f004b8f6445ad2bdb2addb234a,
210-
type: 3}
207+
Prefab: {fileID: 2842198241268549130, guid: 30c420f004b8f6445ad2bdb2addb234a, type: 3}
211208
SourcePrefabToOverride: {fileID: 0}
212209
SourceHashToOverride: 0
213210
OverridingTargetPrefab: {fileID: 0}
214211
- Override: 0
215-
Prefab: {fileID: 2842198241268549130, guid: 7e3b8103f5622f64fa677352730f295c,
216-
type: 3}
212+
Prefab: {fileID: 2842198241268549130, guid: 7e3b8103f5622f64fa677352730f295c, type: 3}
217213
SourcePrefabToOverride: {fileID: 0}
218214
SourceHashToOverride: 0
219215
OverridingTargetPrefab: {fileID: 0}
220216
- Override: 0
221-
Prefab: {fileID: 2842198241268549130, guid: 411974b75a8b43d4e9b3c9069a5067fb,
222-
type: 3}
217+
Prefab: {fileID: 2842198241268549130, guid: 411974b75a8b43d4e9b3c9069a5067fb, type: 3}
223218
SourcePrefabToOverride: {fileID: 0}
224219
SourceHashToOverride: 0
225220
OverridingTargetPrefab: {fileID: 0}
226221
- Override: 0
227-
Prefab: {fileID: 2842198241268549130, guid: 0251e08eeed89e844a8527b3a7874cc2,
228-
type: 3}
222+
Prefab: {fileID: 2842198241268549130, guid: 0251e08eeed89e844a8527b3a7874cc2, type: 3}
229223
SourcePrefabToOverride: {fileID: 0}
230224
SourceHashToOverride: 0
231225
OverridingTargetPrefab: {fileID: 0}
232226
- Override: 0
233-
Prefab: {fileID: 576565557002701866, guid: 3af96a32a84bcf74d9538fa7af973c97,
234-
type: 3}
227+
Prefab: {fileID: 576565557002701866, guid: 3af96a32a84bcf74d9538fa7af973c97, type: 3}
235228
SourcePrefabToOverride: {fileID: 0}
236229
SourceHashToOverride: 0
237230
OverridingTargetPrefab: {fileID: 0}
238231
- Override: 0
239-
Prefab: {fileID: 3597354879354517420, guid: c8513d3df780cb34a9576da3772d512b,
240-
type: 3}
232+
Prefab: {fileID: 3597354879354517420, guid: c8513d3df780cb34a9576da3772d512b, type: 3}
241233
SourcePrefabToOverride: {fileID: 0}
242234
SourceHashToOverride: 0
243235
OverridingTargetPrefab: {fileID: 0}
244236
- Override: 0
245-
Prefab: {fileID: 3106828016798330210, guid: 5c107a985e30aa2469a62ecf015d43a8,
246-
type: 3}
237+
Prefab: {fileID: 3106828016798330210, guid: 5c107a985e30aa2469a62ecf015d43a8, type: 3}
247238
SourcePrefabToOverride: {fileID: 0}
248239
SourceHashToOverride: 0
249240
OverridingTargetPrefab: {fileID: 0}
@@ -262,53 +253,3 @@ MonoBehaviour:
262253
LoadSceneTimeOut: 120
263254
SpawnTimeout: 1
264255
EnableNetworkLogs: 1
265-
--- !u!1 &7311172147761373013
266-
GameObject:
267-
m_ObjectHideFlags: 0
268-
m_CorrespondingSourceObject: {fileID: 0}
269-
m_PrefabInstance: {fileID: 0}
270-
m_PrefabAsset: {fileID: 0}
271-
serializedVersion: 6
272-
m_Component:
273-
- component: {fileID: 1861090270400447367}
274-
- component: {fileID: 7738483995325753316}
275-
m_Layer: 0
276-
m_Name: UnetTransport2
277-
m_TagString: Untagged
278-
m_Icon: {fileID: 0}
279-
m_NavMeshLayer: 0
280-
m_StaticEditorFlags: 0
281-
m_IsActive: 1
282-
--- !u!4 &1861090270400447367
283-
Transform:
284-
m_ObjectHideFlags: 0
285-
m_CorrespondingSourceObject: {fileID: 0}
286-
m_PrefabInstance: {fileID: 0}
287-
m_PrefabAsset: {fileID: 0}
288-
m_GameObject: {fileID: 7311172147761373013}
289-
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
290-
m_LocalPosition: {x: 0, y: 0, z: 0}
291-
m_LocalScale: {x: 1, y: 1, z: 1}
292-
m_Children: []
293-
m_Father: {fileID: 5436007408952557925}
294-
m_RootOrder: 0
295-
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
296-
--- !u!114 &7738483995325753316
297-
MonoBehaviour:
298-
m_ObjectHideFlags: 0
299-
m_CorrespondingSourceObject: {fileID: 0}
300-
m_PrefabInstance: {fileID: 0}
301-
m_PrefabAsset: {fileID: 0}
302-
m_GameObject: {fileID: 7311172147761373013}
303-
m_Enabled: 1
304-
m_EditorHideFlags: 0
305-
m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3}
306-
m_Name:
307-
m_EditorClassIdentifier:
308-
MessageBufferSize: 5120
309-
MaxConnections: 100
310-
MaxSentMessageQueueSize: 128
311-
ConnectAddress: 127.0.0.1
312-
ConnectPort: 7777
313-
ServerListenPort: 7777
314-
MessageSendMode: 0

Assets/BossRoom/Scripts/Client/UI/IPConnectionWindow.cs

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
using TMPro;
44
using Unity.Multiplayer.Samples.BossRoom.Shared.Infrastructure;
55
using Unity.Netcode;
6-
using Unity.Netcode.Transports.UNET;
7-
using Unity.Netcode.Transports.UTP;
86
using UnityEngine;
97

108
namespace Unity.Multiplayer.Samples.BossRoom.Visual
@@ -57,19 +55,10 @@ void OnTimeElapsed()
5755
m_IPUIMediator.DisableSignInSpinner();
5856
}
5957

60-
switch (chosenTransport)
61-
{
62-
case UNetTransport unetTransport:
63-
StartCoroutine(WaitUntilUNETDisconnected(OnTimeElapsed));
64-
break;
65-
case UnityTransport unityTransport:
66-
var maxConnectAttempts= unityTransport.MaxConnectAttempts;
67-
var connectTimeoutMS= unityTransport.ConnectTimeoutMS;
68-
StartCoroutine(DisplayUTPConnectionDuration(maxConnectAttempts, connectTimeoutMS, OnTimeElapsed));
69-
break;
70-
default:
71-
throw new ArgumentOutOfRangeException(nameof(chosenTransport));
72-
}
58+
59+
var maxConnectAttempts= chosenTransport.MaxConnectAttempts;
60+
var connectTimeoutMS= chosenTransport.ConnectTimeoutMS;
61+
StartCoroutine(DisplayUTPConnectionDuration(maxConnectAttempts, connectTimeoutMS, OnTimeElapsed));
7362

7463
Show();
7564
}
@@ -80,13 +69,6 @@ public void CancelConnectionWindow()
8069
StopAllCoroutines();
8170
}
8271

83-
IEnumerator WaitUntilUNETDisconnected(Action endAction)
84-
{
85-
yield return new WaitUntil(() => !NetworkManager.Singleton.IsListening);
86-
87-
endAction();
88-
}
89-
9072
IEnumerator DisplayUTPConnectionDuration(int maxReconnectAttempts, int connectTimeoutMS, Action endAction)
9173
{
9274
var connectionDuration = maxReconnectAttempts * connectTimeoutMS / 1000f;

Assets/BossRoom/Scripts/Shared/Game/UI/Editor/NetworkLatencyWarning.cs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,17 @@ void Update()
2121
{
2222
if (NetworkManager.Singleton != null && (NetworkManager.Singleton.IsClient || NetworkManager.Singleton.IsServer))
2323
{
24-
var chosenTransport = NetworkManager.Singleton.NetworkConfig.NetworkTransport;
24+
var unityTransport = (UnityTransport) NetworkManager.Singleton.NetworkConfig.NetworkTransport;
2525

26-
switch (chosenTransport)
27-
{
28-
case UnityTransport unityTransport:
29-
// adding this preprocessor directive check since UnityTransport's simulator tools only inject latency in #UNITY_EDITOR or in #DEVELOPMENT_BUILD
26+
// adding this preprocessor directive check since UnityTransport's simulator tools only inject latency in #UNITY_EDITOR or in #DEVELOPMENT_BUILD
3027
#if UNITY_EDITOR || DEVELOPMENT_BUILD
31-
var simulatorParameters = unityTransport.DebugSimulator;
32-
m_ArtificialLatencyEnabled = simulatorParameters.PacketDelayMS > 0 ||
33-
simulatorParameters.PacketJitterMS > 0 ||
34-
simulatorParameters.PacketDropRate > 0;
28+
var simulatorParameters = unityTransport.DebugSimulator;
29+
m_ArtificialLatencyEnabled = simulatorParameters.PacketDelayMS > 0 ||
30+
simulatorParameters.PacketJitterMS > 0 ||
31+
simulatorParameters.PacketDropRate > 0;
3532
#else
36-
m_ArtificialLatencyEnabled = false;
33+
m_ArtificialLatencyEnabled = false;
3734
#endif
38-
break;
39-
default:
40-
throw new Exception($"unhandled transport {chosenTransport.GetType()}");
41-
}
4235

4336
if (m_ArtificialLatencyEnabled)
4437
{

Assets/BossRoom/Scripts/Shared/Net/ConnectionManagement/ClientGameNetPortal.cs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -246,22 +246,15 @@ public void StartClient(string ipaddress, int port)
246246
var chosenTransport = NetworkManager.Singleton.gameObject.GetComponent<TransportPicker>().IpHostTransport;
247247
NetworkManager.Singleton.NetworkConfig.NetworkTransport = chosenTransport;
248248

249-
switch (chosenTransport)
250-
{
251-
case UnityTransport unityTransport:
252-
// TODO: once this is exposed in the adapter we will be able to change it
253-
unityTransport.SetConnectionData(ipaddress, (ushort)port);
254-
break;
255-
default:
256-
throw new ArgumentOutOfRangeException(nameof(chosenTransport));
257-
}
249+
// TODO: once this is exposed in the adapter we will be able to change it
250+
chosenTransport.SetConnectionData(ipaddress, (ushort)port);
258251

259252
ConnectClient();
260253
}
261254

262255
public async void StartClientUnityRelayModeAsync(Action<string> onFailure)
263256
{
264-
var utp = (UnityTransport)NetworkManager.Singleton.gameObject.GetComponent<TransportPicker>().UnityRelayTransport;
257+
var utp = NetworkManager.Singleton.gameObject.GetComponent<TransportPicker>().UnityRelayTransport;
265258
NetworkManager.Singleton.NetworkConfig.NetworkTransport = utp;
266259

267260
await JoinRelayAsync(onFailure);

Assets/BossRoom/Scripts/Shared/Net/ConnectionManagement/GameNetPortal.cs

Lines changed: 19 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using Unity.Multiplayer.Samples.BossRoom.Shared.Infrastructure;
66
using Unity.Multiplayer.Samples.BossRoom.Shared.Net.UnityServices.Lobbies;
77
using Unity.Netcode;
8-
using Unity.Netcode.Transports.UTP;
98
using Unity.Services.Authentication;
109
using Unity.Services.Core;
1110
using UnityEngine;
@@ -179,17 +178,7 @@ public bool StartHost(string ipaddress, int port)
179178
{
180179
var chosenTransport = NetworkManager.Singleton.gameObject.GetComponent<TransportPicker>().IpHostTransport;
181180
NetworkManager.Singleton.NetworkConfig.NetworkTransport = chosenTransport;
182-
183-
// Note: In most cases, this switch case shouldn't be necessary. It becomes necessary when having to deal with multiple transports like this
184-
// sample does, since current Transport API doesn't expose these fields.
185-
switch (chosenTransport)
186-
{
187-
case UnityTransport unityTransport:
188-
unityTransport.SetConnectionData(ipaddress, (ushort)port);
189-
break;
190-
default:
191-
throw new Exception($"unhandled IpHost transport {chosenTransport.GetType()}");
192-
}
181+
chosenTransport.SetConnectionData(ipaddress, (ushort)port);
193182

194183
return StartHost();
195184
}
@@ -199,33 +188,25 @@ public async void StartUnityRelayHost()
199188
var chosenTransport = NetworkManager.Singleton.gameObject.GetComponent<TransportPicker>().UnityRelayTransport;
200189
NetworkManager.Singleton.NetworkConfig.NetworkTransport = chosenTransport;
201190

202-
switch (chosenTransport)
191+
Debug.Log("Setting up Unity Relay host");
192+
193+
try
194+
{
195+
var (ipv4Address, port, allocationIdBytes, connectionData, key, joinCode) =
196+
await UnityRelayUtilities.AllocateRelayServerAndGetJoinCode(k_MaxUnityRelayConnections);
197+
198+
m_LocalLobby.RelayJoinCode = joinCode;
199+
//next line enabled lobby and relay services integration
200+
await m_LobbyServiceFacade.UpdateLobbyDataAsync(m_LocalLobby.GetDataForUnityServices());
201+
await m_LobbyServiceFacade.UpdatePlayerRelayInfoAsync(allocationIdBytes.ToString(), joinCode);
202+
203+
// we now need to set the RelayCode somewhere :P
204+
chosenTransport.SetHostRelayData(ipv4Address, port, allocationIdBytes, key, connectionData, isSecure: true);
205+
}
206+
catch (Exception e)
203207
{
204-
case UnityTransport utp:
205-
Debug.Log("Setting up Unity Relay host");
206-
207-
try
208-
{
209-
var (ipv4Address, port, allocationIdBytes, connectionData, key, joinCode) =
210-
await UnityRelayUtilities.AllocateRelayServerAndGetJoinCode(k_MaxUnityRelayConnections);
211-
212-
m_LocalLobby.RelayJoinCode = joinCode;
213-
//next line enabled lobby and relay services integration
214-
await m_LobbyServiceFacade.UpdateLobbyDataAsync(m_LocalLobby.GetDataForUnityServices());
215-
await m_LobbyServiceFacade.UpdatePlayerRelayInfoAsync(allocationIdBytes.ToString(), joinCode);
216-
217-
// we now need to set the RelayCode somewhere :P
218-
utp.SetHostRelayData(ipv4Address, port, allocationIdBytes, key, connectionData, isSecure: true);
219-
}
220-
catch (Exception e)
221-
{
222-
Debug.LogErrorFormat($"{e.Message}");
223-
throw;
224-
}
225-
226-
break;
227-
default:
228-
throw new Exception($"unhandled relay transport {chosenTransport.GetType()}");
208+
Debug.LogErrorFormat($"{e.Message}");
209+
throw;
229210
}
230211

231212
StartHost();
Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,25 @@
1-
using Unity.Netcode;
21
using Unity.Netcode.Transports.UTP;
32
using UnityEngine;
4-
using UnityEngine.Assertions;
53

64
/// <summary>
75
/// This exists as a small helper to easily swap transports while still supporting the UI switch from ip to relay based transports.
86
/// </summary>
97
public class TransportPicker : MonoBehaviour
108
{
119
[SerializeField]
12-
NetworkTransport m_IpHostTransport;
10+
UnityTransport m_IpHostTransport;
1311

1412
[SerializeField]
15-
NetworkTransport m_UnityRelayTransport;
13+
UnityTransport m_UnityRelayTransport;
1614

1715
/// <summary>
1816
/// The transport used when hosting the game on an IP address.
1917
/// </summary>
20-
public NetworkTransport IpHostTransport => m_IpHostTransport;
18+
public UnityTransport IpHostTransport => m_IpHostTransport;
2119

2220

2321
/// <summary>
2422
/// The transport used when hosting the game over a unity relay server.
2523
/// </summary>
26-
public NetworkTransport UnityRelayTransport => m_UnityRelayTransport;
27-
28-
void OnValidate()
29-
{
30-
Assert.IsTrue(m_IpHostTransport == null || m_IpHostTransport as UnityTransport,
31-
"IpHost transport must be UTP.");
32-
}
24+
public UnityTransport UnityRelayTransport => m_UnityRelayTransport;
3325
}

0 commit comments

Comments
 (0)