Skip to content

Commit 54666c3

Browse files
authored
chore: Release/1.5.1 merge back to develop (#2594)
1 parent 1c74129 commit 54666c3

22 files changed

+421
-63
lines changed

com.unity.netcode.gameobjects/CHANGELOG.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
66

77
Additional documentation and release notes are available at [Multiplayer Documentation](https://docs-multiplayer.unity3d.com).
88

9-
## [Unreleased]
9+
## [1.5.1] - 2023-06-07
1010

1111
### Added
1212

13-
- Added support for serializing `NativeArray<>` and `NativeList<>` in `FastBufferReader`/`FastBufferWriter`, `BufferSerializer`, `NetworkVariable`, and RPCs. (#2375)
13+
- Added support for serializing `NativeArray<>` and `NativeList<>` in `FastBufferReader`/`FastBufferWriter`, `BufferSerializer`, `NetworkVariable`, and RPCs. (To use `NativeList<>`, add `UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT` to your Scripting Define Symbols in `Project Settings > Player`) (#2375)
1414
- The location of the automatically-created default network prefab list can now be configured (#2544)
15-
- Added: Message size limits (max single message and max fragmented message) can now be set using NetworkManager.SetMaxSingleMessageSize() and NetworkManager.SetMaxFragmentedMessageSize() for transports that don't work with the default values (#2530)
15+
- Added: Message size limits (max single message and max fragmented message) can now be set using NetworkManager.MaximumTransmissionUnitSize and NetworkManager.MaximumFragmentedMessageSize for transports that don't work with the default values (#2530)
1616
- Added `NetworkObject.SpawnWithObservers` property (default is true) that when set to false will spawn a `NetworkObject` with no observers and will not be spawned on any client until `NetworkObject.NetworkShow` is invoked. (#2568)
1717

1818
### Fixed
1919

20+
- Fixed: Fixed a null reference in codegen in some projects (#2581)
2021
- Fixed issue where the `OnClientDisconnected` client identifier was incorrect after a pending client connection was denied. (#2569)
2122
- Fixed warning "Runtime Network Prefabs was not empty at initialization time." being erroneously logged when no runtime network prefabs had been added (#2565)
2223
- Fixed issue where some temporary debug console logging was left in a merged PR. (#2562)

com.unity.netcode.gameobjects/Editor/CodeGen/CodeGenHelpers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ public static MethodReference MakeGeneric(this MethodReference self, params Type
155155
public static bool IsSubclassOf(this TypeReference typeReference, TypeReference baseClass)
156156
{
157157
var type = typeReference.Resolve();
158-
if (type.BaseType == null || type.BaseType.Name == nameof(Object))
158+
if (type?.BaseType == null || type.BaseType.Name == nameof(Object))
159159
{
160160
return false;
161161
}

com.unity.netcode.gameobjects/Editor/CodeGen/NetworkBehaviourILPP.cs

Lines changed: 55 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ private void CreateNetworkVariableTypeInitializers(AssemblyDefinition assembly)
216216
}
217217
equalityMethod.GenericArguments.Add(wrappedType);
218218
}
219+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
219220
else if (type.Resolve().FullName == "Unity.Collections.NativeList`1")
220221
{
221222
var wrappedType = ((GenericInstanceType)type).GenericArguments[0];
@@ -247,6 +248,7 @@ private void CreateNetworkVariableTypeInitializers(AssemblyDefinition assembly)
247248
}
248249
equalityMethod.GenericArguments.Add(wrappedType);
249250
}
251+
#endif
250252
else if (type.IsValueType)
251253
{
252254
if (type.HasInterface(typeof(INetworkSerializeByMemcpy).FullName) || type.Resolve().IsEnum || IsMemcpyableType(type))
@@ -367,21 +369,31 @@ private void CreateNetworkVariableTypeInitializers(AssemblyDefinition assembly)
367369
private TypeReference m_ClientRpcParams_TypeRef;
368370
private MethodReference m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedByMemcpy_MethodRef;
369371
private MethodReference m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedByMemcpyArray_MethodRef;
372+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
370373
private MethodReference m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedByMemcpyList_MethodRef;
374+
#endif
371375
private MethodReference m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedINetworkSerializable_MethodRef;
372376
private MethodReference m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedINetworkSerializableArray_MethodRef;
377+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
373378
private MethodReference m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedINetworkSerializableList_MethodRef;
379+
#endif
374380
private MethodReference m_NetworkVariableSerializationTypes_InitializeSerializer_ManagedINetworkSerializable_MethodRef;
375381
private MethodReference m_NetworkVariableSerializationTypes_InitializeSerializer_FixedString_MethodRef;
376382
private MethodReference m_NetworkVariableSerializationTypes_InitializeSerializer_FixedStringArray_MethodRef;
383+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
377384
private MethodReference m_NetworkVariableSerializationTypes_InitializeSerializer_FixedStringList_MethodRef;
385+
#endif
378386
private MethodReference m_NetworkVariableSerializationTypes_InitializeEqualityChecker_ManagedIEquatable_MethodRef;
379387
private MethodReference m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedIEquatable_MethodRef;
380388
private MethodReference m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedIEquatableArray_MethodRef;
389+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
381390
private MethodReference m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedIEquatableList_MethodRef;
391+
#endif
382392
private MethodReference m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedValueEquals_MethodRef;
383393
private MethodReference m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedValueEqualsArray_MethodRef;
394+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
384395
private MethodReference m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedValueEqualsList_MethodRef;
396+
#endif
385397
private MethodReference m_NetworkVariableSerializationTypes_InitializeEqualityChecker_ManagedClassEquals_MethodRef;
386398

387399
private MethodReference m_ExceptionCtorMethodReference;
@@ -836,18 +848,24 @@ private bool ImportReferences(ModuleDefinition moduleDefinition)
836848
case nameof(NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpyArray):
837849
m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedByMemcpyArray_MethodRef = method;
838850
break;
851+
852+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
839853
case nameof(NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpyList):
840854
m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedByMemcpyList_MethodRef = method;
841855
break;
856+
#endif
842857
case nameof(NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedINetworkSerializable):
843858
m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedINetworkSerializable_MethodRef = method;
844859
break;
845860
case nameof(NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedINetworkSerializableArray):
846861
m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedINetworkSerializableArray_MethodRef = method;
847862
break;
863+
864+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
848865
case nameof(NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedINetworkSerializableList):
849866
m_NetworkVariableSerializationTypes_InitializeSerializer_UnmanagedINetworkSerializableList_MethodRef = method;
850867
break;
868+
#endif
851869
case nameof(NetworkVariableSerializationTypes.InitializeSerializer_ManagedINetworkSerializable):
852870
m_NetworkVariableSerializationTypes_InitializeSerializer_ManagedINetworkSerializable_MethodRef = method;
853871
break;
@@ -857,9 +875,13 @@ private bool ImportReferences(ModuleDefinition moduleDefinition)
857875
case nameof(NetworkVariableSerializationTypes.InitializeSerializer_FixedStringArray):
858876
m_NetworkVariableSerializationTypes_InitializeSerializer_FixedStringArray_MethodRef = method;
859877
break;
878+
879+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
860880
case nameof(NetworkVariableSerializationTypes.InitializeSerializer_FixedStringList):
861881
m_NetworkVariableSerializationTypes_InitializeSerializer_FixedStringList_MethodRef = method;
862882
break;
883+
#endif
884+
863885
case nameof(NetworkVariableSerializationTypes.InitializeEqualityChecker_ManagedIEquatable):
864886
m_NetworkVariableSerializationTypes_InitializeEqualityChecker_ManagedIEquatable_MethodRef = method;
865887
break;
@@ -869,18 +891,23 @@ private bool ImportReferences(ModuleDefinition moduleDefinition)
869891
case nameof(NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatableArray):
870892
m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedIEquatableArray_MethodRef = method;
871893
break;
894+
895+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
872896
case nameof(NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatableList):
873897
m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedIEquatableList_MethodRef = method;
874898
break;
899+
#endif
875900
case nameof(NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedValueEquals):
876901
m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedValueEquals_MethodRef = method;
877902
break;
878903
case nameof(NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedValueEqualsArray):
879904
m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedValueEqualsArray_MethodRef = method;
880905
break;
906+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
881907
case nameof(NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedValueEqualsList):
882908
m_NetworkVariableSerializationTypes_InitializeEqualityChecker_UnmanagedValueEqualsList_MethodRef = method;
883909
break;
910+
#endif
884911
case nameof(NetworkVariableSerializationTypes.InitializeEqualityChecker_ManagedClassEquals):
885912
m_NetworkVariableSerializationTypes_InitializeEqualityChecker_ManagedClassEquals_MethodRef = method;
886913
break;
@@ -1366,7 +1393,11 @@ private MethodReference GetFastBufferWriterWriteMethod(string name, TypeReferenc
13661393
}
13671394
if (method.GenericParameters[0].HasConstraints)
13681395
{
1369-
if (paramType.IsGenericInstance && (paramType.Resolve().FullName == "Unity.Collections.NativeList`1" || paramType.Resolve().FullName == "Unity.Collections.NativeArray`1"))
1396+
if (paramType.IsGenericInstance && (
1397+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
1398+
paramType.Resolve().FullName == "Unity.Collections.NativeList`1" ||
1399+
#endif
1400+
paramType.Resolve().FullName == "Unity.Collections.NativeArray`1"))
13701401
{
13711402
if (method.Parameters[0].ParameterType.Resolve() != paramType.Resolve())
13721403
{
@@ -1408,7 +1439,11 @@ private MethodReference GetFastBufferWriterWriteMethod(string name, TypeReferenc
14081439
{
14091440
var instanceMethod = new GenericInstanceMethod(method);
14101441

1411-
if (paramType.IsGenericInstance && (paramType.Resolve().FullName == "Unity.Collections.NativeList`1" || paramType.Resolve().FullName == "Unity.Collections.NativeArray`1"))
1442+
if (paramType.IsGenericInstance && (
1443+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
1444+
paramType.Resolve().FullName == "Unity.Collections.NativeList`1" ||
1445+
#endif
1446+
paramType.Resolve().FullName == "Unity.Collections.NativeArray`1"))
14121447
{
14131448
var wrappedType = ((GenericInstanceType)paramType).GenericArguments[0];
14141449
instanceMethod.GenericArguments.Add(wrappedType);
@@ -1559,7 +1594,11 @@ private MethodReference GetFastBufferReaderReadMethod(string name, TypeReference
15591594
{
15601595
continue;
15611596
}
1562-
if (paramType.IsGenericInstance && (paramType.Resolve().FullName == "Unity.Collections.NativeList`1" || paramType.Resolve().FullName == "Unity.Collections.NativeArray`1"))
1597+
if (paramType.IsGenericInstance && (
1598+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
1599+
paramType.Resolve().FullName == "Unity.Collections.NativeList`1" ||
1600+
#endif
1601+
paramType.Resolve().FullName == "Unity.Collections.NativeArray`1"))
15631602
{
15641603
if (method.Name == "OnSendGlobalCounterClientRpc")
15651604
{
@@ -1616,7 +1655,11 @@ private MethodReference GetFastBufferReaderReadMethod(string name, TypeReference
16161655
if (meetsConstraints)
16171656
{
16181657
var instanceMethod = new GenericInstanceMethod(method);
1619-
if (paramType.IsGenericInstance && (paramType.Resolve().FullName == "Unity.Collections.NativeList`1" || paramType.Resolve().FullName == "Unity.Collections.NativeArray`1"))
1658+
if (paramType.IsGenericInstance && (
1659+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
1660+
paramType.Resolve().FullName == "Unity.Collections.NativeList`1" ||
1661+
#endif
1662+
paramType.Resolve().FullName == "Unity.Collections.NativeArray`1"))
16201663
{
16211664
var wrappedType = ((GenericInstanceType)paramType).GenericArguments[0];
16221665
instanceMethod.GenericArguments.Add(wrappedType);
@@ -1691,11 +1734,14 @@ private bool GetReadMethodForParameter(TypeReference paramType, out MethodRefere
16911734
}
16921735

16931736
MethodReference typeMethod;
1737+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
16941738
if (paramType.Resolve().FullName == "Unity.Collections.NativeList`1")
16951739
{
16961740
typeMethod = GetFastBufferReaderReadMethod(k_ReadValueInPlaceMethodName, paramType);
16971741
}
1698-
else if (paramType.Resolve().FullName == "Unity.Collections.NativeArray`1")
1742+
else
1743+
#endif
1744+
if (paramType.Resolve().FullName == "Unity.Collections.NativeArray`1")
16991745
{
17001746
typeMethod = GetFastBufferReaderReadMethod(k_ReadValueTempMethodName, paramType);
17011747
}
@@ -2179,9 +2225,9 @@ private void GenerateVariableInitialization(TypeDefinition type)
21792225
}
21802226
field = new FieldReference(fieldDefinition.Name, fieldDefinition.FieldType, genericType);
21812227
}
2182-
if (field.FieldType.IsSubclassOf(m_NetworkVariableBase_TypeRef))
2228+
if (!field.FieldType.IsArray && !field.FieldType.Resolve().IsArray && field.FieldType.IsSubclassOf(m_NetworkVariableBase_TypeRef))
21832229
{
2184-
// if({variable} != null) {
2230+
// if({variable} == null) {
21852231
processor.Emit(OpCodes.Ldarg_0);
21862232
processor.Emit(OpCodes.Ldfld, field);
21872233
processor.Emit(OpCodes.Ldnull);
@@ -2430,6 +2476,7 @@ private MethodDefinition GenerateStaticHandler(MethodDefinition methodDefinition
24302476
processor.Emit(OpCodes.Brfalse, jumpInstruction);
24312477
}
24322478

2479+
#if UNITY_NETCODE_NATIVE_COLLECTION_SUPPORT
24332480
if (paramType.IsGenericInstance && paramType.Resolve().FullName == "Unity.Collections.NativeList`1")
24342481
{
24352482
// var list = NetworkBehaviour.__createNativeList<T>();
@@ -2449,6 +2496,7 @@ private MethodDefinition GenerateStaticHandler(MethodDefinition methodDefinition
24492496
processor.Emit(OpCodes.Call, method);
24502497
processor.Emit(OpCodes.Stloc, localIndex);
24512498
}
2499+
#endif
24522500

24532501
var foundMethodRef = GetReadMethodForParameter(paramType, out var methodRef);
24542502
if (foundMethodRef)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using UnityEditor;
2+
using UnityEngine;
3+
4+
namespace Unity.Netcode.Editor.Configuration
5+
{
6+
[FilePath("ProjectSettings/NetcodeForGameObjects.asset", FilePathAttribute.Location.ProjectFolder)]
7+
public class NetcodeForGameObjectsProjectSettings : ScriptableSingleton<NetcodeForGameObjectsProjectSettings>
8+
{
9+
internal static readonly string DefaultNetworkPrefabsPath = "Assets/DefaultNetworkPrefabs.asset";
10+
[SerializeField] public string NetworkPrefabsPath = DefaultNetworkPrefabsPath;
11+
public string TempNetworkPrefabsPath;
12+
13+
private void OnEnable()
14+
{
15+
if (NetworkPrefabsPath == "")
16+
{
17+
NetworkPrefabsPath = DefaultNetworkPrefabsPath;
18+
}
19+
TempNetworkPrefabsPath = NetworkPrefabsPath;
20+
}
21+
22+
[SerializeField]
23+
public bool GenerateDefaultNetworkPrefabs;
24+
25+
internal void SaveSettings()
26+
{
27+
Save(true);
28+
}
29+
}
30+
}

com.unity.netcode.gameobjects/Editor/Configuration/NetcodeForGameObjectsProjectSettings.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
using UnityEditor;
2-
using UnityEngine;
3-
using UnityEngine.Serialization;
4-
52

63
namespace Unity.Netcode.Editor.Configuration
74
{
@@ -40,42 +37,4 @@ internal static void SetAutoAddNetworkObjectSetting(bool autoAddSetting)
4037
EditorPrefs.SetBool(AutoAddNetworkObjectIfNoneExists, autoAddSetting);
4138
}
4239
}
43-
44-
[FilePath("ProjectSettings/NetcodeForGameObjects.settings", FilePathAttribute.Location.ProjectFolder)]
45-
internal class NetcodeForGameObjectsProjectSettings : ScriptableSingleton<NetcodeForGameObjectsProjectSettings>
46-
{
47-
internal static readonly string DefaultNetworkPrefabsPath = "Assets/DefaultNetworkPrefabs.asset";
48-
[SerializeField] public string NetworkPrefabsPath = DefaultNetworkPrefabsPath;
49-
public string TempNetworkPrefabsPath;
50-
51-
private void OnEnable()
52-
{
53-
if (NetworkPrefabsPath == "")
54-
{
55-
NetworkPrefabsPath = DefaultNetworkPrefabsPath;
56-
}
57-
TempNetworkPrefabsPath = NetworkPrefabsPath;
58-
}
59-
60-
[SerializeField]
61-
[FormerlySerializedAs("GenerateDefaultNetworkPrefabs")]
62-
private byte m_GenerateDefaultNetworkPrefabs;
63-
64-
public bool GenerateDefaultNetworkPrefabs
65-
{
66-
get
67-
{
68-
return m_GenerateDefaultNetworkPrefabs != 0;
69-
}
70-
set
71-
{
72-
m_GenerateDefaultNetworkPrefabs = (byte)(value ? 1 : 0);
73-
}
74-
}
75-
76-
internal void SaveSettings()
77-
{
78-
Save(true);
79-
}
80-
}
8140
}

com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ private void OnEnable()
585585
/// This should represent the transport's MTU size, minus any transport-level overhead.
586586
/// </summary>
587587
/// <param name="size"></param>
588-
public int MaxTransmissionUnitSize
588+
public int MaximumTransmissionUnitSize
589589
{
590590
set => MessageManager.NonFragmentedMessageMaxSize = value;
591591
get => MessageManager.NonFragmentedMessageMaxSize;

0 commit comments

Comments
 (0)