|
@@ -3,21 +3,34 @@ using UnityEngine.Assertions;
|
|
using Unity.Collections;
|
|
using Unity.Collections;
|
|
using Unity.Networking.Transport;
|
|
using Unity.Networking.Transport;
|
|
using KairoEngine.Core;
|
|
using KairoEngine.Core;
|
|
|
|
+using Sirenix.OdinInspector;
|
|
|
|
|
|
namespace KairoEngine.Multiplayer
|
|
namespace KairoEngine.Multiplayer
|
|
{
|
|
{
|
|
|
|
+ [HideMonoScript]
|
|
public class ServerBehaviour : MonoBehaviour
|
|
public class ServerBehaviour : MonoBehaviour
|
|
{
|
|
{
|
|
|
|
+ public NetMsgController netMsgController;
|
|
|
|
+ public string eventStreamName = "ServerEvents";
|
|
public ushort port = 9000;
|
|
public ushort port = 9000;
|
|
public int players = 4;
|
|
public int players = 4;
|
|
public bool autoStart = true;
|
|
public bool autoStart = true;
|
|
- public string eventStreamName = "ServerEvents";
|
|
|
|
|
|
+
|
|
public bool debug = false;
|
|
public bool debug = false;
|
|
public NetworkDriver m_Driver;
|
|
public NetworkDriver m_Driver;
|
|
public NativeList<NetworkConnection> m_Connections;
|
|
public NativeList<NetworkConnection> m_Connections;
|
|
private bool locked = false;
|
|
private bool locked = false;
|
|
|
|
|
|
- void Start ()
|
|
|
|
|
|
+ private void Awake()
|
|
|
|
+ {
|
|
|
|
+ if(netMsgController == null)
|
|
|
|
+ {
|
|
|
|
+ Debug.LogError("Server is missing NetMsgController!", this);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void Start ()
|
|
{
|
|
{
|
|
if(autoStart) StartServer();
|
|
if(autoStart) StartServer();
|
|
}
|
|
}
|
|
@@ -25,6 +38,11 @@ namespace KairoEngine.Multiplayer
|
|
public void StartServer()
|
|
public void StartServer()
|
|
{
|
|
{
|
|
if(locked) return;
|
|
if(locked) return;
|
|
|
|
+ if(netMsgController == null)
|
|
|
|
+ {
|
|
|
|
+ Debug.LogError("Server cannot start with missing NetMsgController!", this);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
m_Driver = NetworkDriver.Create();
|
|
m_Driver = NetworkDriver.Create();
|
|
var endpoint = NetworkEndPoint.AnyIpv4;
|
|
var endpoint = NetworkEndPoint.AnyIpv4;
|
|
endpoint.Port = port;
|
|
endpoint.Port = port;
|
|
@@ -60,7 +78,7 @@ namespace KairoEngine.Multiplayer
|
|
{
|
|
{
|
|
DataStreamWriter writer = new DataStreamWriter();
|
|
DataStreamWriter writer = new DataStreamWriter();
|
|
m_Driver.BeginSend(m_Connections[id], out writer);
|
|
m_Driver.BeginSend(m_Connections[id], out writer);
|
|
- NetMsgController.SendData(code, netMsg, ref writer, this, id);
|
|
|
|
|
|
+ netMsgController.SendData(code, netMsg, ref writer, this, id);
|
|
m_Driver.EndSend(writer);
|
|
m_Driver.EndSend(writer);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -114,7 +132,7 @@ namespace KairoEngine.Multiplayer
|
|
if (cmd == NetworkEvent.Type.Data)
|
|
if (cmd == NetworkEvent.Type.Data)
|
|
{
|
|
{
|
|
//if(debug) Debug.Log("Server received data from client");
|
|
//if(debug) Debug.Log("Server received data from client");
|
|
- NetMsgController.ReceiveData(ref stream, this, i);
|
|
|
|
|
|
+ netMsgController.ReceiveData(ref stream, this, i);
|
|
}
|
|
}
|
|
else if (cmd == NetworkEvent.Type.Disconnect)
|
|
else if (cmd == NetworkEvent.Type.Disconnect)
|
|
{
|
|
{
|