Skip to content

fix: remove ilpp for network variable [MTT-3438] #1976

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
May 25, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion com.unity.netcode.gameobjects/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ Additional documentation and release notes are available at [Multiplayer Documen
- Fixed `NetworkSceneManager` was not sending scene event notifications for the currently active scene and any additively loaded scenes when loading a new scene in `LoadSceneMode.Single` mode. (#1975)
- Fixed issue where one or more clients disconnecting during a scene event would cause `LoadEventCompleted` or `UnloadEventCompleted` to wait until the `NetworkConfig.LoadSceneTimeOut` period before being triggered. (#1973)
- Fixed issues when multiple `ConnectionApprovalCallback`s were registered (#1972)
- `FixedString` types can now be used in NetworkVariables and RPCs again without requiring a `ForceNetworkSerializeByMemcpy<>` wrapper (#1961)
- Fixed a regression in serialization support: `FixedString`, `Vector2Int`, and `Vector3Int` types can now be used in NetworkVariables and RPCs again without requiring a `ForceNetworkSerializeByMemcpy<>` wrapper. (#1961)
- Fixed generic types that inherit from NetworkBehaviour causing crashes at compile time. (#1976)
- Fixed endless dialog boxes when adding a `NetworkBehaviour` to a `NetworkManager` or vice-versa. (#1947)
- Fixed `NetworkAnimator` issue where it was only synchronizing parameters if the layer or state changed or was transitioning between states. (#1946)
- Fixed `NetworkAnimator` issue where when it did detect a parameter had changed it would send all parameters as opposed to only the parameters that changed. (#1946)
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,6 @@ public override ILPostProcessResult Process(ICompiledAssembly compiledAssembly)
case nameof(NetworkBehaviour):
ProcessNetworkBehaviour(typeDefinition);
break;
case nameof(NetworkVariableHelper):
ProcessNetworkVariableHelper(typeDefinition);
break;
case nameof(__RpcParams):
typeDefinition.IsPublic = true;
break;
Expand Down Expand Up @@ -103,25 +100,6 @@ private void ProcessNetworkManager(TypeDefinition typeDefinition, string[] assem
}
}

private void ProcessNetworkVariableHelper(TypeDefinition typeDefinition)
{
foreach (var methodDefinition in typeDefinition.Methods)
{
if (methodDefinition.Name == nameof(NetworkVariableHelper.InitializeDelegatesEnum))
{
methodDefinition.IsPublic = true;
}
if (methodDefinition.Name == nameof(NetworkVariableHelper.InitializeDelegatesStruct))
{
methodDefinition.IsPublic = true;
}
if (methodDefinition.Name == nameof(NetworkVariableHelper.InitializeDelegatesNetworkSerializable))
{
methodDefinition.IsPublic = true;
}
}
}

private void ProcessNetworkBehaviour(TypeDefinition typeDefinition)
{
foreach (var nestedType in typeDefinition.NestedTypes)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1153,7 +1153,6 @@ private void OnEnable()
private void Awake()
{
UnityEngine.SceneManagement.SceneManager.sceneUnloaded += OnSceneUnloaded;
NetworkVariableHelper.InitializeAllBaseDelegates();
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace Unity.Netcode
/// Event based NetworkVariable container for syncing Lists
/// </summary>
/// <typeparam name="T">The type for the list</typeparam>
public class NetworkList<T> : NetworkVariableSerialization<T> where T : unmanaged, IEquatable<T>
public class NetworkList<T> : NetworkVariableBase where T : unmanaged, IEquatable<T>
{
private NativeList<T> m_List = new NativeList<T>(64, Allocator.Persistent);
private NativeList<T> m_ListAtLastReset = new NativeList<T>(64, Allocator.Persistent);
Expand Down Expand Up @@ -72,34 +72,35 @@ public override void WriteDelta(FastBufferWriter writer)
writer.WriteValueSafe((ushort)m_DirtyEvents.Length);
for (int i = 0; i < m_DirtyEvents.Length; i++)
{
writer.WriteValueSafe(m_DirtyEvents[i].Type);
switch (m_DirtyEvents[i].Type)
var element = m_DirtyEvents.ElementAt(i);
writer.WriteValueSafe(element.Type);
switch (element.Type)
{
case NetworkListEvent<T>.EventType.Add:
{
Write(writer, m_DirtyEvents[i].Value);
NetworkVariableSerialization<T>.Write(writer, ref element.Value);
}
break;
case NetworkListEvent<T>.EventType.Insert:
{
writer.WriteValueSafe(m_DirtyEvents[i].Index);
Write(writer, m_DirtyEvents[i].Value);
writer.WriteValueSafe(element.Index);
NetworkVariableSerialization<T>.Write(writer, ref element.Value);
}
break;
case NetworkListEvent<T>.EventType.Remove:
{
Write(writer, m_DirtyEvents[i].Value);
NetworkVariableSerialization<T>.Write(writer, ref element.Value);
}
break;
case NetworkListEvent<T>.EventType.RemoveAt:
{
writer.WriteValueSafe(m_DirtyEvents[i].Index);
writer.WriteValueSafe(element.Index);
}
break;
case NetworkListEvent<T>.EventType.Value:
{
writer.WriteValueSafe(m_DirtyEvents[i].Index);
Write(writer, m_DirtyEvents[i].Value);
writer.WriteValueSafe(element.Index);
NetworkVariableSerialization<T>.Write(writer, ref element.Value);
}
break;
case NetworkListEvent<T>.EventType.Clear:
Expand All @@ -117,7 +118,7 @@ public override void WriteField(FastBufferWriter writer)
writer.WriteValueSafe((ushort)m_ListAtLastReset.Length);
for (int i = 0; i < m_ListAtLastReset.Length; i++)
{
Write(writer, m_ListAtLastReset[i]);
NetworkVariableSerialization<T>.Write(writer, ref m_ListAtLastReset.ElementAt(i));
}
}

Expand All @@ -128,7 +129,7 @@ public override void ReadField(FastBufferReader reader)
reader.ReadValueSafe(out ushort count);
for (int i = 0; i < count; i++)
{
Read(reader, out T value);
NetworkVariableSerialization<T>.Read(reader, out T value);
m_List.Add(value);
}
}
Expand All @@ -144,7 +145,7 @@ public override void ReadDelta(FastBufferReader reader, bool keepDirtyDelta)
{
case NetworkListEvent<T>.EventType.Add:
{
Read(reader, out T value);
NetworkVariableSerialization<T>.Read(reader, out T value);
m_List.Add(value);

if (OnListChanged != null)
Expand All @@ -171,7 +172,7 @@ public override void ReadDelta(FastBufferReader reader, bool keepDirtyDelta)
case NetworkListEvent<T>.EventType.Insert:
{
reader.ReadValueSafe(out int index);
Read(reader, out T value);
NetworkVariableSerialization<T>.Read(reader, out T value);
m_List.InsertRangeWithBeginEnd(index, index + 1);
m_List[index] = value;

Expand All @@ -198,7 +199,7 @@ public override void ReadDelta(FastBufferReader reader, bool keepDirtyDelta)
break;
case NetworkListEvent<T>.EventType.Remove:
{
Read(reader, out T value);
NetworkVariableSerialization<T>.Read(reader, out T value);
int index = m_List.IndexOf(value);
if (index == -1)
{
Expand Down Expand Up @@ -258,7 +259,7 @@ public override void ReadDelta(FastBufferReader reader, bool keepDirtyDelta)
case NetworkListEvent<T>.EventType.Value:
{
reader.ReadValueSafe(out int index);
Read(reader, out T value);
NetworkVariableSerialization<T>.Read(reader, out T value);
if (index >= m_List.Length)
{
throw new Exception("Shouldn't be here, index is higher than list length");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Unity.Netcode
/// A variable that can be synchronized over the network.
/// </summary>
[Serializable]
public class NetworkVariable<T> : NetworkVariableSerialization<T> where T : unmanaged
public class NetworkVariable<T> : NetworkVariableBase where T : unmanaged
{
/// <summary>
/// Delegate type for value changed event
Expand Down Expand Up @@ -102,7 +102,7 @@ public override void ReadDelta(FastBufferReader reader, bool keepDirtyDelta)
// would be stored in different fields

T previousValue = m_InternalValue;
Read(reader, out m_InternalValue);
NetworkVariableSerialization<T>.Read(reader, out m_InternalValue);

if (keepDirtyDelta)
{
Expand All @@ -115,13 +115,13 @@ public override void ReadDelta(FastBufferReader reader, bool keepDirtyDelta)
/// <inheritdoc />
public override void ReadField(FastBufferReader reader)
{
Read(reader, out m_InternalValue);
NetworkVariableSerialization<T>.Read(reader, out m_InternalValue);
}

/// <inheritdoc />
public override void WriteField(FastBufferWriter writer)
{
Write(writer, m_InternalValue);
NetworkVariableSerialization<T>.Write(writer, ref m_InternalValue);
}
}
}

This file was deleted.

This file was deleted.

Loading