Skip to content

Commit cf05421

Browse files
feat: Make custom driver construction smoother
1 parent 8851038 commit cf05421

4 files changed

Lines changed: 21 additions & 10 deletions

File tree

com.unity.netcode.gameobjects/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ Additional documentation and release notes are available at [Multiplayer Documen
1010

1111
### Added
1212

13+
- Added a new variant of `UnityTransport.GetDefaultPipelineConfigurations` that takes a reference to the created `NetworkDriver`. This will register all pipeline stages that `UnityTransport` requires, removing the need to manually register them in your own custom driver constructor.
1314

1415
### Changed
1516

17+
- `NetworkMetricsPipelineStage` is now defined even when the multiplayer tools package is not installed, removing the need to guard its registration behind a version define when using a custom driver in `UnityTransport`.
1618

1719
### Deprecated
1820

com.unity.netcode.gameobjects/Runtime/Transports/UTP/INetworkStreamDriverConstructor.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,8 @@ namespace Unity.Netcode.Transports.UTP
3636
/// var settings = transport.GetDefaultNetworkSettings();
3737
/// driver = NetworkDriver.Create(new IPCNetworkInterface(), settings);
3838
///
39-
/// driver.RegisterPipelineStage(new NetworkMetricsPipelineStage());
40-
///
4139
/// transport.GetDefaultPipelineConfigurations(
40+
/// ref driver,
4241
/// out var unreliableFragmentedPipelineStages,
4342
/// out var unreliableSequencedFragmentedPipelineStages,
4443
/// out var reliableSequencedPipelineStages);

com.unity.netcode.gameobjects/Runtime/Transports/UTP/NetworkMetricsPipelineStage.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#if MULTIPLAYER_TOOLS
2-
#if MULTIPLAYER_TOOLS_1_0_0_PRE_7
31
using AOT;
42
using Unity.Burst;
53
using Unity.Collections.LowLevel.Unsafe;
@@ -70,5 +68,3 @@ private static void InitializeConnection(byte* staticInstanceBuffer, int staticI
7068
}
7169
}
7270
}
73-
#endif
74-
#endif

com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,23 @@ public void GetDefaultPipelineConfigurations(
657657
reliableSequencedPipelineStages = new(reliableSequenced, Allocator.Temp);
658658
}
659659

660+
/// <inheritdoc cref="GetDefaultPipelineConfigurations(out NativeArray{NetworkPipelineStageId}, out NativeArray{NetworkPipelineStageId}, out NativeArray{NetworkPipelineStageId})"/>
661+
/// <param name="driver">Driver for which the pipeline configurations are being retrieved.</param>
662+
public void GetDefaultPipelineConfigurations(
663+
ref NetworkDriver driver,
664+
out NativeArray<NetworkPipelineStageId> unreliableFragmentedPipelineStages,
665+
out NativeArray<NetworkPipelineStageId> unreliableSequencedFragmentedPipelineStages,
666+
out NativeArray<NetworkPipelineStageId> reliableSequencedPipelineStages)
667+
{
668+
#if MULTIPLAYER_TOOLS_1_0_0_PRE_7
669+
driver.RegisterPipelineStage(new NetworkMetricsPipelineStage());
670+
#endif
671+
GetDefaultPipelineConfigurations(
672+
out unreliableFragmentedPipelineStages,
673+
out unreliableSequencedFragmentedPipelineStages,
674+
out reliableSequencedPipelineStages);
675+
}
676+
660677
private NetworkPipeline SelectSendPipeline(NetworkDelivery delivery)
661678
{
662679
switch (delivery)
@@ -1860,11 +1877,8 @@ public void CreateDriver(
18601877
#endif
18611878
}
18621879

1863-
#if MULTIPLAYER_TOOLS_1_0_0_PRE_7
1864-
driver.RegisterPipelineStage(new NetworkMetricsPipelineStage());
1865-
#endif
1866-
18671880
GetDefaultPipelineConfigurations(
1881+
ref driver,
18681882
out var unreliableFragmentedPipelineStages,
18691883
out var unreliableSequencedFragmentedPipelineStages,
18701884
out var reliableSequencedPipelineStages);

0 commit comments

Comments
 (0)