wip: INetworkBehaviour

This commit is contained in:
Syntriax 2024-02-08 17:59:04 +03:00
parent edd2dd8511
commit b8b10de08a
3 changed files with 48 additions and 1 deletions

2
Engine

@ -1 +1 @@
Subproject commit 72492a9f5a186afd4e7ff7c27d592a194a06f543
Subproject commit be06575f913c2b649f53c9fe7a8ed33abdf5734f

View File

@ -0,0 +1,15 @@
using Syntriax.Engine.Core.Abstract;
namespace Pong.Network;
public interface INetworkBehaviour : IBehaviour
{
int NetworkId { get; }
bool LocalAssigned { get; }
bool IsServer { get; }
bool IsClient { get; }
INetworkCommunicator NetworkCommunicator { get; }
}

View File

@ -0,0 +1,32 @@
using Syntriax.Engine.Core;
namespace Pong.Network;
public class NetworkBehaviour : BehaviourOverride, INetworkBehaviour
{
public int NetworkId { get; private set; } = 0;
public bool LocalAssigned { get; private set; } = false;
public bool IsServer { get; private set; } = false;
public bool IsClient { get; private set; } = false;
public INetworkCommunicator NetworkCommunicator { get; private set; } = null!;
protected override void OnInitialize()
{
if ((BehaviourController.GetBehaviourInParent<INetworkCommunicator>() ?? GameObject.GameManager.FindBehaviour<INetworkCommunicator>()) is not NetworkCommunicator)
throw new System.Exception($"Could not find an {nameof(INetworkCommunicator)}.");
if (NetworkCommunicator is INetworkServer server)
{
IsServer = true;
LocalAssigned = true;
// TODO Set and send Network Id
}
else
IsClient = true;
}
}