The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Additional documentation and release notes are available at [Multiplayer Documentation](https://docs-multiplayer.unity3d.com). ## [1.0.0-pre.8] - 2022-04-27 ### Changed - `unmanaged` structs are no longer universally accepted as RPC parameters because some structs (i.e., structs with pointers in them, such as `NativeList<T>`) can't be supported by the default memcpy struct serializer. Structs that are intended to be serialized across the network must add `INetworkSerializeByMemcpy` to the interface list (i.e., `struct Foo : INetworkSerializeByMemcpy`). This interface is empty and just serves to mark the struct as compatible with memcpy serialization. For external structs you can't edit, you can pass them to RPCs by wrapping them in `ForceNetworkSerializeByMemcpy<T>`. (#1901) ### Removed - Removed `SIPTransport` (#1870) - Removed `ClientNetworkTransform` from the package samples and moved to Boss Room's Utilities package which can be found [here](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/Packages/com.unity.multiplayer.samples.coop/Utilities/Net/ClientAuthority/ClientNetworkTransform.cs). ### Fixed - Fixed `NetworkTransform` generating false positive rotation delta checks when rolling over between 0 and 360 degrees. (#1890) - Fixed client throwing an exception if it has messages in the outbound queue when processing the `NetworkEvent.Disconnect` event and is using UTP. (#1884) - Fixed issue during client synchronization if 'ValidateSceneBeforeLoading' returned false it would halt the client synchronization process resulting in a client that was approved but not synchronized or fully connected with the server. (#1883) - Fixed an issue where UNetTransport.StartServer would return success even if the underlying transport failed to start (#854) - Passing generic types to RPCs no longer causes a native crash (#1901) - Fixed an issue where calling `Shutdown` on a `NetworkManager` that was already shut down would cause an immediate shutdown the next time it was started (basically the fix makes `Shutdown` idempotent). (#1877)
72 lines
4.4 KiB
C#
72 lines
4.4 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace Unity.Netcode
|
|
{
|
|
public interface IReaderWriter
|
|
{
|
|
bool IsReader { get; }
|
|
bool IsWriter { get; }
|
|
|
|
FastBufferReader GetFastBufferReader();
|
|
FastBufferWriter GetFastBufferWriter();
|
|
|
|
void SerializeValue(ref string s, bool oneByteChars = false);
|
|
void SerializeValue(ref byte value);
|
|
void SerializeValue<T>(ref T value, FastBufferWriter.ForPrimitives unused = default) where T : unmanaged, IComparable, IConvertible, IComparable<T>, IEquatable<T>;
|
|
void SerializeValue<T>(ref T[] value, FastBufferWriter.ForPrimitives unused = default) where T : unmanaged, IComparable, IConvertible, IComparable<T>, IEquatable<T>;
|
|
void SerializeValue<T>(ref T value, FastBufferWriter.ForEnums unused = default) where T : unmanaged, Enum;
|
|
void SerializeValue<T>(ref T[] value, FastBufferWriter.ForEnums unused = default) where T : unmanaged, Enum;
|
|
void SerializeValue<T>(ref T value, FastBufferWriter.ForStructs unused = default) where T : unmanaged, INetworkSerializeByMemcpy;
|
|
void SerializeValue<T>(ref T[] value, FastBufferWriter.ForStructs unused = default) where T : unmanaged, INetworkSerializeByMemcpy;
|
|
void SerializeValue<T>(ref T value, FastBufferWriter.ForNetworkSerializable unused = default) where T : INetworkSerializable, new();
|
|
void SerializeValue<T>(ref T[] value, FastBufferWriter.ForNetworkSerializable unused = default) where T : INetworkSerializable, new();
|
|
void SerializeValue(ref Vector2 value);
|
|
void SerializeValue(ref Vector2[] value);
|
|
void SerializeValue(ref Vector3 value);
|
|
void SerializeValue(ref Vector3[] value);
|
|
void SerializeValue(ref Vector4 value);
|
|
void SerializeValue(ref Vector4[] value);
|
|
void SerializeValue(ref Quaternion value);
|
|
void SerializeValue(ref Quaternion[] value);
|
|
void SerializeValue(ref Color value);
|
|
void SerializeValue(ref Color[] value);
|
|
void SerializeValue(ref Color32 value);
|
|
void SerializeValue(ref Color32[] value);
|
|
void SerializeValue(ref Ray value);
|
|
void SerializeValue(ref Ray[] value);
|
|
void SerializeValue(ref Ray2D value);
|
|
void SerializeValue(ref Ray2D[] value);
|
|
|
|
// Has to have a different name to avoid conflicting with "where T: unmananged"
|
|
void SerializeNetworkSerializable<T>(ref T value) where T : INetworkSerializable, new();
|
|
|
|
bool PreCheck(int amount);
|
|
void SerializeValuePreChecked(ref string s, bool oneByteChars = false);
|
|
void SerializeValuePreChecked(ref byte value);
|
|
void SerializeValuePreChecked<T>(ref T value, FastBufferWriter.ForPrimitives unused = default) where T : unmanaged, IComparable, IConvertible, IComparable<T>, IEquatable<T>;
|
|
void SerializeValuePreChecked<T>(ref T[] value, FastBufferWriter.ForPrimitives unused = default) where T : unmanaged, IComparable, IConvertible, IComparable<T>, IEquatable<T>;
|
|
void SerializeValuePreChecked<T>(ref T value, FastBufferWriter.ForEnums unused = default) where T : unmanaged, Enum;
|
|
void SerializeValuePreChecked<T>(ref T[] value, FastBufferWriter.ForEnums unused = default) where T : unmanaged, Enum;
|
|
void SerializeValuePreChecked<T>(ref T value, FastBufferWriter.ForStructs unused = default) where T : unmanaged, INetworkSerializeByMemcpy;
|
|
void SerializeValuePreChecked<T>(ref T[] value, FastBufferWriter.ForStructs unused = default) where T : unmanaged, INetworkSerializeByMemcpy;
|
|
|
|
void SerializeValuePreChecked(ref Vector2 value);
|
|
void SerializeValuePreChecked(ref Vector2[] value);
|
|
void SerializeValuePreChecked(ref Vector3 value);
|
|
void SerializeValuePreChecked(ref Vector3[] value);
|
|
void SerializeValuePreChecked(ref Vector4 value);
|
|
void SerializeValuePreChecked(ref Vector4[] value);
|
|
void SerializeValuePreChecked(ref Quaternion value);
|
|
void SerializeValuePreChecked(ref Quaternion[] value);
|
|
void SerializeValuePreChecked(ref Color value);
|
|
void SerializeValuePreChecked(ref Color[] value);
|
|
void SerializeValuePreChecked(ref Color32 value);
|
|
void SerializeValuePreChecked(ref Color32[] value);
|
|
void SerializeValuePreChecked(ref Ray value);
|
|
void SerializeValuePreChecked(ref Ray[] value);
|
|
void SerializeValuePreChecked(ref Ray2D value);
|
|
void SerializeValuePreChecked(ref Ray2D[] value);
|
|
}
|
|
}
|