feat: network manager listens to all received packets
This commit is contained in:
parent
0153d4cf69
commit
6591326b70
@ -6,7 +6,22 @@ namespace Syntriax.Engine.Network;
|
|||||||
|
|
||||||
public class NetworkManager : UniverseObject, INetworkManager
|
public class NetworkManager : UniverseObject, INetworkManager
|
||||||
{
|
{
|
||||||
public INetworkCommunicator NetworkCommunicator { get; set; } = null!;
|
private INetworkCommunicator networkCommunicator = null!;
|
||||||
|
public INetworkCommunicator NetworkCommunicator
|
||||||
|
{
|
||||||
|
get => networkCommunicator;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (networkCommunicator == value)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var previousCommunicator = networkCommunicator;
|
||||||
|
networkCommunicator = value;
|
||||||
|
|
||||||
|
if (previousCommunicator is not null) previousCommunicator.OnPacketReceived -= OnPacketReceived;
|
||||||
|
if (networkCommunicator is not null) networkCommunicator.OnPacketReceived += OnPacketReceived;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private readonly Dictionary<string, INetworkEntity> _networkEntities = [];
|
private readonly Dictionary<string, INetworkEntity> _networkEntities = [];
|
||||||
public IReadOnlyDictionary<string, INetworkEntity> NetworkEntities => _networkEntities;
|
public IReadOnlyDictionary<string, INetworkEntity> NetworkEntities => _networkEntities;
|
||||||
@ -20,6 +35,14 @@ public class NetworkManager : UniverseObject, INetworkManager
|
|||||||
_networkEntityCollector.OnRemoved += OnRemoved;
|
_networkEntityCollector.OnRemoved += OnRemoved;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnPacketReceived(INetworkCommunicator sender, object packet, string from)
|
||||||
|
{
|
||||||
|
if (packet is not EntityDataPacket entityDataPacket)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_networkEntities[entityDataPacket.Entity].ReceiveData(entityDataPacket.Data);
|
||||||
|
}
|
||||||
|
|
||||||
private void OnCollected(IBehaviourCollector<INetworkEntity> sender, INetworkEntity behaviourCollected)
|
private void OnCollected(IBehaviourCollector<INetworkEntity> sender, INetworkEntity behaviourCollected)
|
||||||
{
|
{
|
||||||
if (!_networkEntities.TryAdd(behaviourCollected.Id, behaviourCollected))
|
if (!_networkEntities.TryAdd(behaviourCollected.Id, behaviourCollected))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user