public void ServerFound(BroadcastPacket brdPacket) { //Extract port from package ushort port = NUUtilities.GetUInt16(brdPacket.packet.GetCleanData()); IPEndPoint endPoint = new IPEndPoint(brdPacket.senderIp, port); //Try to add server if (!availableServers.Add(endPoint)) { return; } //Instantiate GUI Prefab GameObject serverEntry = GameObject.Instantiate(serverEntryPrefab, serverListPanel); Text[] texts = serverEntry.GetComponentsInChildren <Text>(); //Update IPAddress texts[0].text = brdPacket.senderIp.ToString(); //Update Port texts[1].text = port.ToString(); Button connect = serverEntry.GetComponentInChildren <Button>(); connect.onClick.AddListener(() => { ConnectToServer(endPoint, serverEntry); }); }
private void FixedUpdate() { if (NUServer.started) //Is Server! { //Send Game-state to everyone online Packet stateData = new Packet(GetStateMsg(), NUServer.GetConnectedClients()); NUServer.SendUnreliable(stateData); } // Test for multipart (really big) packet if (Input.GetKeyUp(KeyCode.I)) { byte[] randomBuffer = new byte[8192]; for (int i = 0; i < 8192; i++) { randomBuffer[i] = (byte)(Random.Range(0, 255)); } if (NUServer.started) { Packet multipartTestPacket = new Packet(randomBuffer, NUServer.GetConnectedClients(), Packet.TypeFlag.DATA); NUServer.SendReliable(multipartTestPacket); } else if (NUClient.connected) { Packet multipartTestPacket = new Packet(randomBuffer); NUClient.SendReliable(multipartTestPacket); } } // Test for sequenced packet if (Input.GetKeyUp(KeyCode.J)) { Packet firstPacket = new Packet("First", packetId: NUUtilities.GeneratePacketId()); Packet secondPacket = new Packet("Second", packetId: NUUtilities.GeneratePacketId()); Packet thirdPacket = new Packet("Third", packetId: NUUtilities.GeneratePacketId()); Debug.LogError("Third"); Debug.LogError("Second"); Debug.LogError("First"); if (NUServer.started) { thirdPacket.OverrideDestination(NUServer.GetConnectedClients()); NUServer.SendReliableSequenced(thirdPacket); //Send third first secondPacket.OverrideDestination(NUServer.GetConnectedClients()); NUServer.SendReliableSequenced(secondPacket); //Send second second firstPacket.OverrideDestination(NUServer.GetConnectedClients()); NUServer.SendReliableSequenced(firstPacket); //Then first third } else if (NUClient.connected) { NUClient.SendReliableSequenced(thirdPacket); //Send third first NUClient.SendReliableSequenced(secondPacket); //Send second second NUClient.SendReliableSequenced(firstPacket); //Then first third } } }
private byte[] GetStateData() { byte[] state = new byte[playerObjects.Count * (32 /*GUID*/ + 12 /*XYZ*/)]; int i = 0; foreach (var player in playerObjects) { //Copy GUID Data Array.Copy(player.Key.ToByteArray(), 0, state, i * 44, 32); //Copy Position Data Vector3 pos = player.Value.transform.position; byte[] posData = NUUtilities.GetBytes(pos); Array.Copy(posData, 0, state, i * 44 + 32, 12); } return(state); }
public void CreateNewServer() { NUServer.Start(NUUtilities.ListIPv4Addresses()[0]); NUClient.Connect(NUUtilities.ListIPv4Addresses()[0]); }
private void Start() { NUClient.SetupBroadcast(NUUtilities.ListIPv4Addresses()[0]); }