[Add] FishNet

This commit is contained in:
2026-03-30 20:11:57 +07:00
parent ee793a3361
commit c22c08753a
1797 changed files with 197950 additions and 1 deletions
@@ -0,0 +1,47 @@
using FishNet.Object;
using FishNet.Serializing;
using FishNet.Transporting;
namespace FishNet.Managing.Utility
{
public class Packets
{
/// <summary>
/// Returns written data length for packet.
/// </summary>
internal static int GetPacketLength(ushort packetId, PooledReader reader, Channel channel)
{
/* Broadcast is a special circumstance where data
* will not be purged even if unreliable.
* This is because a broadcast receiver may not
* be set, which could be intentional. Because of this
* length is always sent to skip
* past the broadcast data.
*
* Reliables also need length read in the instance a client
* sends data to an object which server is despawning. Without
* parsing length the remainer data from client will be corrupt. */
/* // todo: we will not always get length on reconciles once
* the issue with parsed headers is resolved. */
PacketId pid = (PacketId)packetId;
if (channel == Channel.Reliable || pid == PacketId.Broadcast || pid == PacketId.SyncType || pid == PacketId.Reconcile)
{
return reader.ReadInt32();
}
// Unreliable purges remaining.
else if (channel == Channel.Unreliable)
{
return (int)MissingObjectPacketLength.PurgeRemaiming;
}
/* Unhandled. This shouldn't be possible
* since both reliable and unreliable is checked.
* There are no other options. This is merely here
* for a sanity check. */
else
{
reader.NetworkManager.LogError($"Operation is unhandled for packetId {(PacketId)packetId} on channel {channel}.");
return (int)MissingObjectPacketLength.PurgeRemaiming;
}
}
}
}