refactor: renamed NetworkBehaviour to CommonNetworkBehaviour

This commit is contained in:
2026-03-06 11:55:10 +03:00
parent 6ca3f22b17
commit 35c7eb9578

View File

@@ -0,0 +1,40 @@
using Engine.Core;
namespace Engine.Systems.Network;
/// <summary>
/// Basic network behaviour that supports both client & server behaviour. Finds both
/// the <see cref="INetworkCommunicatorClient"/> and the <see cref="INetworkCommunicatorServer"/>
/// in the universe in it's first active frame. Recommended to use <see cref="ClientBehaviour"/> or <see cref="ServerBehaviour"/>
/// <br/>
/// Disclaimer: It implements <see cref="IFirstFrameUpdate"/> and <see cref="ILastFrameUpdate"/> in virtual methods.
/// </summary>
public class CommonNetworkBehaviour : Behaviour, IFirstFrameUpdate, ILastFrameUpdate
{
protected INetworkCommunicatorServer? server = null!;
protected INetworkCommunicatorClient? client = null!;
protected bool IsServer { get; private set; } = false;
protected bool IsClient { get; private set; } = false;
public INetworkCommunicatorServer Server => server ?? throw new Core.Exceptions.NotFoundException($"Universe does not contain a {nameof(INetworkCommunicatorServer)}");
public INetworkCommunicatorClient Client => client ?? throw new Core.Exceptions.NotFoundException($"Universe does not contain a {nameof(INetworkCommunicatorClient)}");
public virtual void FirstActiveFrame()
{
client = Universe.FindBehaviour<INetworkCommunicatorClient>();
server = Universe.FindBehaviour<INetworkCommunicatorServer>();
IsServer = server is not null;
IsClient = client is not null;
}
public virtual void LastActiveFrame()
{
client = null!;
server = null!;
IsServer = false;
IsClient = false;
}
}