Skip to content

Commit 2ecbd14

Browse files
feat: up-port of network variable traits, anticipation, serialized null references, and removal of animator component requirement (#2957)
* update This contains the updates for PR-2820 (Anticipated NetworkVariable and NetworkTransform) with minor adjustments based on updates in the v2.0.0 branch. Updating the package version. Adding updated changelog entries. up-port of PR-2872 up-port of PR-2874. updating change log file
1 parent ba4102f commit 2ecbd14

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+2690
-67
lines changed

com.unity.netcode.gameobjects/CHANGELOG.md

+10-1
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,17 @@ 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-
## [2.0.0-pre.1] - 2024-06-17
9+
## [2.0.0-pre.2] - 2024-06-17
1010

1111
### Added
1212

13+
- Added `AnticipatedNetworkVariable<T>`, which adds support for client anticipation of `NetworkVariable` values, allowing for more responsive gameplay. (#2957)
14+
- Added `AnticipatedNetworkTransform`, which adds support for client anticipation of NetworkTransforms. (#2957)
15+
- Added `NetworkVariableBase.ExceedsDirtinessThreshold` to allow network variables to throttle updates by only sending updates when the difference between the current and previous values exceeds a threshold. (This is exposed in `NetworkVariable<T>` with the callback `NetworkVariable<T>.CheckExceedsDirtinessThreshold`). (#2957)
16+
- Added `NetworkVariableUpdateTraits`, which add additional throttling support: `MinSecondsBetweenUpdates` will prevent the `NetworkVariable` from sending updates more often than the specified time period (even if it exceeds the dirtiness threshold), while `MaxSecondsBetweenUpdates` will force a dirty `NetworkVariable` to send an update after the specified time period even if it has not yet exceeded the dirtiness threshold. (#2957)
17+
- Added virtual method `NetworkVariableBase.OnInitialize` which can be used by `NetworkVariable` subclasses to add initialization code. (#2957)
18+
- Added `NetworkTime.TickWithPartial`, which represents the current tick as a double that includes the fractional/partial tick value. (#2957)
19+
- Added `NetworkTickSystem.AnticipationTick`, which can be helpful with implementation of client anticipation. This value represents the tick the current local client was at at the beginning of the most recent network round trip, which enables it to correlate server update ticks with the client tick that may have triggered them. (#2957)
1320
- Added event `NetworkManager.OnSessionOwnerPromoted` that is invoked when a new session owner promotion occurs. (#2948)
1421
- Added `NetworkRigidBodyBase.GetLinearVelocity` and `NetworkRigidBodyBase.SetLinearVelocity` convenience/helper methods. (#2948)
1522
- Added `NetworkRigidBodyBase.GetAngularVelocity` and `NetworkRigidBodyBase.SetAngularVelocity` convenience/helper methods. (#2948)
@@ -22,6 +29,8 @@ Additional documentation and release notes are available at [Multiplayer Documen
2229

2330
### Changed
2431

32+
- Changed `NetworkAnimator` no longer requires the `Animator` component to exist on the same `GameObject`. (#2957)
33+
- Changed `NetworkObjectReference` and `NetworkBehaviourReference` to allow null references when constructing and serializing. (#2957)
2534
- Changed the client's owned objects is now returned (`NetworkClient` and `NetworkSpawnManager`) as an array as opposed to a list for performance purposes. (#2948)
2635
- Changed `NetworkTransfrom.TryCommitTransformToServer` to be internal as it will be removed by the final 2.0.0 release. (#2948)
2736
- Changed `NetworkTransformEditor.OnEnable` to a virtual method to be able to customize a `NetworkTransform` derived class by creating a derived editor control from `NetworkTransformEditor`. (#2948)

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

+1
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,7 @@ private void CreateNetworkVariableTypeInitializers(AssemblyDefinition assembly,
409409
}
410410
else
411411
{
412+
m_Diagnostics.AddError($"{type}: Managed type in NetworkVariable must implement IEquatable<{type}>");
412413
equalityMethod = new GenericInstanceMethod(m_NetworkVariableSerializationTypes_InitializeEqualityChecker_ManagedClassEquals_MethodRef);
413414
}
414415

com.unity.netcode.gameobjects/Editor/NetworkTransformEditor.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public virtual void OnEnable()
6666
/// <inheritdoc/>
6767
public override void OnInspectorGUI()
6868
{
69+
var networkTransform = target as NetworkTransform;
6970
EditorGUILayout.LabelField("Axis to Synchronize", EditorStyles.boldLabel);
7071
{
7172
GUILayout.BeginHorizontal();
@@ -144,7 +145,10 @@ public override void OnInspectorGUI()
144145
EditorGUILayout.Space();
145146
EditorGUILayout.LabelField("Configurations", EditorStyles.boldLabel);
146147
EditorGUILayout.PropertyField(m_InLocalSpaceProperty);
147-
EditorGUILayout.PropertyField(m_InterpolateProperty);
148+
if (!networkTransform.HideInterpolateValue)
149+
{
150+
EditorGUILayout.PropertyField(m_InterpolateProperty);
151+
}
148152
EditorGUILayout.PropertyField(m_SlerpPosition);
149153
EditorGUILayout.PropertyField(m_UseQuaternionSynchronization);
150154
if (m_UseQuaternionSynchronization.boolValue)

0 commit comments

Comments
 (0)