Пример #1
0
        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!");
            }
        }
Пример #2
0
        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();
        }
Пример #3
0
        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;
        }
Пример #4
0
 public void SubscribeNS <T>(Action <T> onReceiveHandler) where T : INetSerializable, new()
 {
     // TODO: Can't get reusable with this, is that ok?
     netPacketProcessor.SubscribeNetSerializable(onReceiveHandler);
 }