void Awake() { m_serverScene = SceneManager.LoadScene("server_scene", Constants.DefaultSceneParams); m_ServerSimulation = m_serverScene.GetPhysicsScene(); SceneManager.MoveGameObjectToScene(m_ServerSharedPlayer.gameObject, m_serverScene); m_LogicLoop = new GameLoop(OnNetworkUpdate); m_Inputs = new RingBuffer <InputMessage>(Constants.SNAPSHOT_RATE); m_PacketProcessor = new NetPacketProcessor(); m_PacketProcessor.RegisterNestedType <EntityState>(); m_PacketProcessor.RegisterNestedType <InputData>(); m_PacketProcessor.SubscribeNetSerializable <InputMessage, NetPeer>(OnPlayerInput); m_Manager = new NetManager(this); m_LogicLoop.Start(); if (m_Manager.Start(5000)) { print("SERVER NET MANAGER STARTED!"); } else { print("SERVER NET MANAGER FAILED!"); } }
void Awake() { m_ClientScene = SceneManager.LoadScene("client_scene", Constants.DefaultSceneParams); m_ClientSimulation = m_ClientScene.GetPhysicsScene(); SceneManager.MoveGameObjectToScene(m_GetPlayer.gameObject, m_ClientScene); m_LogicLoop = new GameLoop(OnNetworkUpdate); m_Simulation = new SimulationStep[Constants.SNAPSHOT_RATE]; m_Snapshots = new RingBuffer <Snapshot>(Constants.SNAPSHOT_RATE); m_Input = new InputMessage(0, 0, new List <InputData>()); m_PacketProcessor = new NetPacketProcessor(); m_PacketProcessor.RegisterNestedType <EntityState>(); m_PacketProcessor.SubscribeNetSerializable <Snapshot>(OnStateMessage); m_Manager = new NetManager(this); m_LogicLoop.Start(); if (m_Manager.Start()) { m_Manager.Connect("127.0.0.1", 5000, "key"); print("CLIENT NET MANAGER STARTED!"); } else { print("CLIENT NET MANAGER FAILED!"); } m_Poller = GetComponent <InputPoller>(); UI_Handler.instance.TurnOn(); UIControl.instance.TurnOff(); }
public void AcceptConnections() { NetDebug.Logger = this; _netPacketProcessor.SubscribeNetSerializable <VoicePaketSetup, NetPeer>(onVoiceSetup); _netPacketProcessor.SubscribeNetSerializable <VoicePaketCommand, NetPeer>(onVoiceCommand); _netPacketProcessor.SubscribeNetSerializable <VoicePaketUpdate, NetPeer>(onVoiceUpdate); _netPacketProcessor.SubscribeNetSerializable <VoicePaketMute, NetPeer>(onVoiceMute); _netPacketProcessor.SubscribeNetSerializable <VoicePaketBatchMute, NetPeer>(onVoiceBatchMute); _netPacketProcessor.SubscribeNetSerializable <VoicePaketBatchUpdate, NetPeer>(onVoiceBatchUpdate); _netPacketProcessor.SubscribeNetSerializable <VoicePaketConfigureClient, NetPeer>(onVoiceConfigureClient); clientListener.NetworkReceiveEvent += (peer, reader, method) => { _netPacketProcessor.ReadAllPackets(reader, peer); }; clientListener.PeerConnectedEvent += (p) => VoicePlugin.Log("PeerConnectedEvent {0}", p); clientListener.PeerDisconnectedEvent += ClientListener_PeerDisconnectedEvent; clientListener.NetworkErrorEvent += (p, e) => VoicePlugin.Log("NetworkErrorEvent {0} => {1}", p, e); clientListener.NetworkLatencyUpdateEvent += ClientListener_NetworkLatencyUpdateEvent; _timer = new System.Timers.Timer(); _timer.Interval = 100; _timer.Elapsed += (s, e) => { if (_needConnection) { if (IsConnected && DateTime.Now - _lastPureVoicePing > TimeSpan.FromSeconds(10)) { _needConnection = false; var con = VoicePlugin.GetConnection(_connectionInfo.ServerGUID); if (con != null) { con.DisconnectVoiceServer(); } OnDisconnected?.Invoke(this, this); Disconnect(); return; } if (!IsConnected) { StartServerConnection(); return; } } if (IsConnected) { Client?.PollEvents(); } }; if (!_timer.Enabled) { _timer.Start(); } var evL = new EventBasedNetListener(); evL.NetworkReceiveUnconnectedEvent += (ep, reader, messageType) => ServerListener_NetworkReceiveUnconnectedEvent(ep, reader, messageType); ServerListener = new NetManager(evL) { UnconnectedMessagesEnabled = true, UnsyncedEvents = true }; ServerListener.Start(4239); WebListener.ConnectionRequestReceived += WebListener_ConnectionRequestReceived; WebListener.StartListen(); VoicePlugin.Log("voiceClient waiting for Connectioninfo..."); _ShutDown = false; }
public void SubscribeNS <T>(Action <T> onReceiveHandler) where T : INetSerializable, new() { // TODO: Can't get reusable with this, is that ok? netPacketProcessor.SubscribeNetSerializable(onReceiveHandler); }