using LiteNetLib; using LiteNetLib.Utils; namespace Syntriax.Engine.Network.Abstract; public interface INetworkCommunicator { EventBasedNetListener Listener { get; } NetManager Manager { get; } void PollEvents(); void Stop(); void RegisterEntityPacketListener(INetworkEntity networkEntity, EntityPacketReceivedDelegate onPacketReceived) where T : INetSerializable; void UnregisterEntityPacketListener(INetworkEntity networkEntity, EntityPacketReceivedDelegate onPacketReceived) where T : INetSerializable; void SendEntityPacket(INetworkEntity networkEntity, T packet, params NetPeer[] netPeer) where T : INetSerializable; delegate void EntityPacketReceivedDelegate(INetworkEntity networkEntity, object packet, NetPeer netPeer); }