feat: Test Network
This commit is contained in:
parent
91d301677f
commit
c28568d0cb
|
@ -1,16 +1,19 @@
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using Microsoft.Xna.Framework.Graphics;
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
using Microsoft.Xna.Framework.Input;
|
using Microsoft.Xna.Framework.Input;
|
||||||
|
|
||||||
using Pong.Behaviours;
|
|
||||||
using Apos.Shapes;
|
using Apos.Shapes;
|
||||||
|
|
||||||
|
using Pong.Behaviours;
|
||||||
|
using Syntriax.Engine.Network;
|
||||||
|
|
||||||
using Syntriax.Engine.Core;
|
using Syntriax.Engine.Core;
|
||||||
using Syntriax.Engine.Core.Abstract;
|
using Syntriax.Engine.Core.Abstract;
|
||||||
using Syntriax.Engine.Physics2D;
|
using Syntriax.Engine.Physics2D;
|
||||||
using Syntriax.Engine.Physics2D.Primitives;
|
|
||||||
using Syntriax.Engine.Physics2D.Abstract;
|
using Syntriax.Engine.Physics2D.Abstract;
|
||||||
|
using Syntriax.Engine.Physics2D.Primitives;
|
||||||
|
|
||||||
namespace Pong;
|
namespace Pong;
|
||||||
|
|
||||||
|
@ -64,58 +67,81 @@ public class GamePong : Game
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
IGameObject gameObjectCamera = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Camera"); ;
|
string[] commandLineArguments = Environment.GetCommandLineArgs();
|
||||||
|
if (commandLineArguments.Length != 1)
|
||||||
|
{
|
||||||
|
if (commandLineArguments[1].Equals("server", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
gameManager.InstantiateGameObject().BehaviourController.AddBehaviour<NetworkServer>().Start(8888, 2);
|
||||||
|
Window.Title = "Pong - Server";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Window.Title = $"Pong - Client -> {commandLineArguments[1]}";
|
||||||
|
gameManager.InstantiateGameObject().BehaviourController.AddBehaviour<NetworkClient>().Connect(commandLineArguments[1], 8888);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gameManager.InstantiateGameObject().BehaviourController.AddBehaviour<NetworkClient>().Connect("127.0.0.1", 8888);
|
||||||
|
Window.Title = $"Pong - Client -> 127.0.0.1";
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
IGameObject gameObjectCamera = gameManager.InstantiateGameObject().SetGameObject("Camera"); ;
|
||||||
gameObjectCamera.BehaviourController.AddBehaviour<CameraController>();
|
gameObjectCamera.BehaviourController.AddBehaviour<CameraController>();
|
||||||
cameraBehaviour = gameObjectCamera.BehaviourController.AddBehaviour<MonoGameCamera2DBehaviour>(graphics);
|
cameraBehaviour = gameObjectCamera.BehaviourController.AddBehaviour<MonoGameCamera2DBehaviour>(graphics);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
IGameObject gameObjectPongManager = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Pong Game Manager");
|
IGameObject gameObjectPongManager = gameManager.InstantiateGameObject().SetGameObject("Pong Game Manager");
|
||||||
pongManager = gameObjectPongManager.BehaviourController.AddBehaviour<PongManagerBehaviour>(5);
|
pongManager = gameObjectPongManager.BehaviourController.AddBehaviour<PongManagerBehaviour>(5);
|
||||||
|
pongManager.Id = "pongManager";
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
IGameObject gameObjectBall = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Ball");
|
IGameObject gameObjectBall = gameManager.InstantiateGameObject().SetGameObject("Ball");
|
||||||
gameObjectBall.Transform.SetTransform(position: new Vector2D(0, 0f), scale: new Vector2D(10f, 10f));
|
gameObjectBall.Transform.SetTransform(position: new Vector2D(0, 0f), scale: new Vector2D(10f, 10f));
|
||||||
|
|
||||||
gameObjectBall.BehaviourController.AddBehaviour<CircleBehaviour>(new Circle(Vector2D.Zero, 1f));
|
gameObjectBall.BehaviourController.AddBehaviour<CircleBehaviour>(new Circle(Vector2D.Zero, 1f));
|
||||||
gameObjectBall.BehaviourController.AddBehaviour<BallBehaviour>();
|
gameObjectBall.BehaviourController.AddBehaviour<BallBehaviour>().Id = "ball";
|
||||||
gameObjectBall.BehaviourController.AddBehaviour<RigidBody2D>();
|
gameObjectBall.BehaviourController.AddBehaviour<RigidBody2D>();
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
IGameObject gameObjectLeftPaddle = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Left Paddle");
|
IGameObject gameObjectLeftPaddle = gameManager.InstantiateGameObject().SetGameObject("Left Paddle");
|
||||||
gameObjectLeftPaddle.Transform.SetTransform(position: new Vector2D(-468f, 0f), scale: new Vector2D(15f, 60f));
|
gameObjectLeftPaddle.Transform.SetTransform(position: new Vector2D(-468f, 0f), scale: new Vector2D(15f, 60f));
|
||||||
|
|
||||||
gameObjectLeftPaddle.BehaviourController.AddBehaviour<PaddleBehaviour>(Keys.W, Keys.S, 228f, -228f, 400f);
|
gameObjectLeftPaddle.BehaviourController.AddBehaviour<PaddleBehaviour>(Keys.W, Keys.S, 228f, -228f, 400f).Id = "leftPaddle";
|
||||||
gameObjectLeftPaddle.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
gameObjectLeftPaddle.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
||||||
gameObjectLeftPaddle.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
gameObjectLeftPaddle.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||||
|
|
||||||
IGameObject gameObjectRightPaddle = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Right Paddle");
|
IGameObject gameObjectRightPaddle = gameManager.InstantiateGameObject().SetGameObject("Right Paddle");
|
||||||
gameObjectRightPaddle.Transform.SetTransform(position: new Vector2D(468f, 0f), scale: new Vector2D(15f, 60f));
|
gameObjectRightPaddle.Transform.SetTransform(position: new Vector2D(468f, 0f), scale: new Vector2D(15f, 60f));
|
||||||
gameObjectRightPaddle.BehaviourController.AddBehaviour<PaddleBehaviour>(Keys.Up, Keys.Down, 228f, -228f, 400f);
|
gameObjectRightPaddle.BehaviourController.AddBehaviour<PaddleBehaviour>(Keys.Up, Keys.Down, 228f, -228f, 400f).Id = "rightPaddle";
|
||||||
gameObjectRightPaddle.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
gameObjectRightPaddle.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
||||||
gameObjectRightPaddle.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
gameObjectRightPaddle.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
IGameObject gameObjectWallTop = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Wall Top");
|
IGameObject gameObjectWallTop = gameManager.InstantiateGameObject().SetGameObject("Wall Top");
|
||||||
gameObjectWallTop.Transform.SetTransform(position: new Vector2D(0f, 308f), scale: new Vector2D(552f, 20f));
|
gameObjectWallTop.Transform.SetTransform(position: new Vector2D(0f, 308f), scale: new Vector2D(552f, 20f));
|
||||||
gameObjectWallTop.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
gameObjectWallTop.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
||||||
gameObjectWallTop.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
gameObjectWallTop.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||||
|
|
||||||
IGameObject gameObjectWallBottom = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Wall Bottom");
|
IGameObject gameObjectWallBottom = gameManager.InstantiateGameObject().SetGameObject("Wall Bottom");
|
||||||
gameObjectWallBottom.Transform.SetTransform(position: new Vector2D(0f, -308f), scale: new Vector2D(552f, 20f));
|
gameObjectWallBottom.Transform.SetTransform(position: new Vector2D(0f, -308f), scale: new Vector2D(552f, 20f));
|
||||||
gameObjectWallBottom.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
gameObjectWallBottom.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
||||||
gameObjectWallBottom.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
gameObjectWallBottom.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||||
|
|
||||||
IGameObject gameObjectWallRight = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Wall Right");
|
IGameObject gameObjectWallRight = gameManager.InstantiateGameObject().SetGameObject("Wall Right");
|
||||||
gameObjectWallRight.Transform.SetTransform(position: new Vector2D(532f, 0f), scale: new Vector2D(20f, 328f));
|
gameObjectWallRight.Transform.SetTransform(position: new Vector2D(532f, 0f), scale: new Vector2D(20f, 328f));
|
||||||
gameObjectWallRight.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToLeft);
|
gameObjectWallRight.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToLeft);
|
||||||
gameObjectWallRight.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
gameObjectWallRight.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
||||||
gameObjectWallRight.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
gameObjectWallRight.BehaviourController.AddBehaviour<RigidBody2D>().IsStatic = true;
|
||||||
|
|
||||||
IGameObject gameObjectWallLeft = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Wall Left");
|
IGameObject gameObjectWallLeft = gameManager.InstantiateGameObject().SetGameObject("Wall Left");
|
||||||
gameObjectWallLeft.Transform.SetTransform(position: new Vector2D(-532f, 0f), scale: new Vector2D(20f, 328f));
|
gameObjectWallLeft.Transform.SetTransform(position: new Vector2D(-532f, 0f), scale: new Vector2D(20f, 328f));
|
||||||
gameObjectWallLeft.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToRight);
|
gameObjectWallLeft.BehaviourController.AddBehaviour<WallScoreBehaviour>((Action)pongManager.ScoreToRight);
|
||||||
gameObjectWallLeft.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
gameObjectWallLeft.BehaviourController.AddBehaviour<ShapeBehaviour>(Shape.Box);
|
||||||
|
@ -123,11 +149,11 @@ public class GamePong : Game
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
IGameObject gameObjectLeftScoreText = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Score Left");
|
IGameObject gameObjectLeftScoreText = gameManager.InstantiateGameObject().SetGameObject("Score Left");
|
||||||
gameObjectLeftScoreText.Transform.SetTransform(position: new Vector2D(-250f, 250f), scale: Vector2D.One * .25f);
|
gameObjectLeftScoreText.Transform.SetTransform(position: new Vector2D(-250f, 250f), scale: Vector2D.One * .25f);
|
||||||
gameObjectLeftScoreText.BehaviourController.AddBehaviour<TextScoreBehaviour>(true, spriteFont);
|
gameObjectLeftScoreText.BehaviourController.AddBehaviour<TextScoreBehaviour>(true, spriteFont);
|
||||||
|
|
||||||
IGameObject gameObjectRightScoreText = gameManager.InstantiateGameObject<GameObject>().SetGameObject("Score Right");
|
IGameObject gameObjectRightScoreText = gameManager.InstantiateGameObject().SetGameObject("Score Right");
|
||||||
gameObjectRightScoreText.Transform.SetTransform(position: new Vector2D(250f, 250f), scale: Vector2D.One * .25f);
|
gameObjectRightScoreText.Transform.SetTransform(position: new Vector2D(250f, 250f), scale: Vector2D.One * .25f);
|
||||||
gameObjectRightScoreText.BehaviourController.AddBehaviour<TextScoreBehaviour>(false, spriteFont);
|
gameObjectRightScoreText.BehaviourController.AddBehaviour<TextScoreBehaviour>(false, spriteFont);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using LiteNetLib;
|
using LiteNetLib;
|
||||||
using LiteNetLib.Utils;
|
|
||||||
|
|
||||||
namespace Syntriax.Engine.Network.Abstract;
|
namespace Syntriax.Engine.Network.Abstract;
|
||||||
|
|
||||||
|
@ -10,10 +9,4 @@ public interface INetworkCommunicator
|
||||||
|
|
||||||
void PollEvents();
|
void PollEvents();
|
||||||
void Stop();
|
void Stop();
|
||||||
|
|
||||||
void RegisterEntityPacketListener<T>(INetworkEntity networkEntity, EntityPacketReceivedDelegate onPacketReceived) where T : INetSerializable;
|
|
||||||
void UnregisterEntityPacketListener<T>(INetworkEntity networkEntity, EntityPacketReceivedDelegate onPacketReceived) where T : INetSerializable;
|
|
||||||
void SendEntityPacket<T>(INetworkEntity networkEntity, T packet, params NetPeer[] netPeer) where T : INetSerializable;
|
|
||||||
|
|
||||||
delegate void EntityPacketReceivedDelegate(INetworkEntity networkEntity, object packet, NetPeer netPeer);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
using LiteNetLib.Utils;
|
|
||||||
|
|
||||||
namespace Syntriax.Engine.Network.Abstract;
|
namespace Syntriax.Engine.Network.Abstract;
|
||||||
|
|
||||||
public interface INetworkEntity
|
public interface INetworkEntity
|
||||||
|
@ -9,9 +7,4 @@ public interface INetworkEntity
|
||||||
uint NetworkId { get; set; }
|
uint NetworkId { get; set; }
|
||||||
|
|
||||||
delegate void OnNetworkIdChangedDelegate(INetworkEntity sender, uint previousId);
|
delegate void OnNetworkIdChangedDelegate(INetworkEntity sender, uint previousId);
|
||||||
delegate void PacketReceivedDelegate(INetworkEntity entity, object packet);
|
|
||||||
|
|
||||||
void RegisterPacketListener<T>(PacketReceivedDelegate onPacketReceived) where T : INetSerializable;
|
|
||||||
void UnregisterPacketListener<T>(PacketReceivedDelegate onPacketReceived) where T : INetSerializable;
|
|
||||||
void SendPacket<T>(T packet) where T : INetSerializable;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,7 @@
|
||||||
using LiteNetLib.Utils;
|
|
||||||
|
|
||||||
namespace Syntriax.Engine.Network.Abstract;
|
namespace Syntriax.Engine.Network.Abstract;
|
||||||
|
|
||||||
public class NetworkPacket<T>()
|
public class NetworkPacket<T>
|
||||||
: INetSerializable
|
|
||||||
where T : INetSerializable
|
|
||||||
{
|
{
|
||||||
public uint NetworkId = 0;
|
public uint NetworkId { get; set; } = 0;
|
||||||
public T Data = default!;
|
public T Data { get; set; } = default!;
|
||||||
|
|
||||||
public void Deserialize(NetDataReader reader)
|
|
||||||
{
|
|
||||||
NetworkId = reader.GetUInt();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Serialize(NetDataWriter writer)
|
|
||||||
{
|
|
||||||
writer.Put(NetworkId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
||||||
using LiteNetLib;
|
using LiteNetLib;
|
||||||
using LiteNetLib.Utils;
|
using LiteNetLib.Utils;
|
||||||
|
|
||||||
|
@ -15,7 +14,6 @@ public abstract class NetworkBase : BehaviourOverride, INetworkCommunicator
|
||||||
private readonly NetPacketProcessor netPacketProcessor = new();
|
private readonly NetPacketProcessor netPacketProcessor = new();
|
||||||
|
|
||||||
private readonly Dictionary<uint, INetworkEntity> networkEntities = [];
|
private readonly Dictionary<uint, INetworkEntity> networkEntities = [];
|
||||||
private readonly Dictionary<Type, List<INetworkCommunicator.EntityPacketReceivedDelegate>> callbacks = [];
|
|
||||||
|
|
||||||
private BehaviourCollector<INetworkEntity> networkEntityCollector = null!;
|
private BehaviourCollector<INetworkEntity> networkEntityCollector = null!;
|
||||||
|
|
||||||
|
@ -30,6 +28,12 @@ public abstract class NetworkBase : BehaviourOverride, INetworkCommunicator
|
||||||
Manager = new NetManager(Listener);
|
Manager = new NetManager(Listener);
|
||||||
|
|
||||||
Listener.NetworkReceiveEvent += NetworkReceiveEvent;
|
Listener.NetworkReceiveEvent += NetworkReceiveEvent;
|
||||||
|
netPacketProcessor.SubscribeReusable<NetworkPacket<int>, NetPeer>(OnPacketArrived);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnPacketArrived(NetworkPacket<int> packet, NetPeer peer)
|
||||||
|
{
|
||||||
|
Debug.WriteLine($"Packet Arrived for {packet.NetworkId}: {packet.Data}");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnInitialize()
|
protected override void OnInitialize()
|
||||||
|
@ -40,6 +44,7 @@ public abstract class NetworkBase : BehaviourOverride, INetworkCommunicator
|
||||||
networkEntityCollector.OnCollected += OnNetworkEntityCollected;
|
networkEntityCollector.OnCollected += OnNetworkEntityCollected;
|
||||||
networkEntityCollector.OnRemoved += OnNetworkEntityRemoved;
|
networkEntityCollector.OnRemoved += OnNetworkEntityRemoved;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnFinalize()
|
protected override void OnFinalize()
|
||||||
{
|
{
|
||||||
networkEntityCollector.OnCollected -= OnNetworkEntityCollected;
|
networkEntityCollector.OnCollected -= OnNetworkEntityCollected;
|
||||||
|
@ -62,48 +67,4 @@ public abstract class NetworkBase : BehaviourOverride, INetworkCommunicator
|
||||||
public void Stop() => Manager.Stop();
|
public void Stop() => Manager.Stop();
|
||||||
|
|
||||||
protected override void OnUpdate() => PollEvents();
|
protected override void OnUpdate() => PollEvents();
|
||||||
|
|
||||||
public void RegisterEntityPacketListener<T>(INetworkEntity networkEntity, INetworkCommunicator.EntityPacketReceivedDelegate onPacketReceived) where T : INetSerializable
|
|
||||||
{
|
|
||||||
if (!callbacks.TryGetValue(typeof(T), out var list))
|
|
||||||
{
|
|
||||||
list = [];
|
|
||||||
callbacks.Add(typeof(T), list);
|
|
||||||
netPacketProcessor.SubscribeReusable<NetworkPacket<T>, NetPeer>(OnPacketReceived);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (list.Contains(onPacketReceived))
|
|
||||||
return;
|
|
||||||
|
|
||||||
list.Add(onPacketReceived);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UnregisterEntityPacketListener<T>(INetworkEntity networkEntity, INetworkCommunicator.EntityPacketReceivedDelegate onPacketReceived) where T : INetSerializable
|
|
||||||
{
|
|
||||||
if (!callbacks.TryGetValue(typeof(T), out var list))
|
|
||||||
return;
|
|
||||||
|
|
||||||
list.Remove(onPacketReceived);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SendEntityPacket<T>(INetworkEntity networkEntity, T packet, params NetPeer[] netPeers) where T : INetSerializable
|
|
||||||
{
|
|
||||||
NetworkPacket<T> networkPacket = new() { NetworkId = networkEntity.NetworkId, Data = packet };
|
|
||||||
NetDataWriter netDataWriter = new();
|
|
||||||
netPacketProcessor.Write(netDataWriter, networkPacket);
|
|
||||||
foreach (var netPeer in netPeers)
|
|
||||||
netPeer.Send(netDataWriter, DeliveryMethod.ReliableOrdered);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnPacketReceived<T>(NetworkPacket<T> packet, NetPeer peer) where T : INetSerializable
|
|
||||||
{
|
|
||||||
Debug.WriteLine($"Packet Received: {packet.NetworkId} - {typeof(T)}");
|
|
||||||
|
|
||||||
if (!callbacks.TryGetValue(typeof(T), out var list))
|
|
||||||
return;
|
|
||||||
|
|
||||||
INetworkEntity networkEntity = networkEntities[packet.NetworkId];
|
|
||||||
foreach (INetworkCommunicator.EntityPacketReceivedDelegate callback in list)
|
|
||||||
callback.Invoke(networkEntity, packet, peer);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,21 +48,4 @@ public abstract class NetworkBehaviour : BehaviourOverride, INetworkBehaviour
|
||||||
|
|
||||||
IsServer = true;
|
IsServer = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegisterPacketListener<T>(INetworkEntity.PacketReceivedDelegate onPacketReceived) where T : INetSerializable
|
|
||||||
|
|
||||||
private void OnEntityPacketReceived(INetworkEntity networkEntity, object packet, NetPeer netPeer)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UnregisterPacketListener<T>(INetworkEntity.PacketReceivedDelegate onPacketReceived) where T : INetSerializable
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SendPacket<T>(T packet) where T : INetSerializable
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Syntriax.Engine.Network.Abstract;
|
using Syntriax.Engine.Network.Abstract;
|
||||||
|
|
||||||
namespace Syntriax.Engine.Network;
|
namespace Syntriax.Engine.Network;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Syntriax.Engine.Network.Abstract;
|
using Syntriax.Engine.Network.Abstract;
|
||||||
|
|
||||||
namespace Syntriax.Engine.Network;
|
namespace Syntriax.Engine.Network;
|
||||||
|
|
Loading…
Reference in New Issue