void Update() { if (network.HasMessage) { byte[] data = network.GetMessage(); if (data == null) { Debug.Log("Received NULL"); } else { Debug.Log("Received with length: " + data.Length); // Receiving own ID if (data.Length == 3 && data[0] == 0 && data[1] == 5) { byte ownID = data[2]; manager.OwnID = ownID; SendOwnUDPPort(ownID); Invoke("SendOwnUDPPortDelayed", 1); Invoke("SendOwnUDPPortDelayed", 2); //Invoke("WaitShort2", 3); SendOwnUsername(ownID, IpAndPort.playername); sendingEnabled = true; manager.Initiated = true; } // Receiving map number if (data.Length == 3 && data[0] == 0 && data[1] == 9) { byte mapNumber = data[2]; manager.SetMapNumber(mapNumber); } // Receiving playerlist if (data.Length >= 2 && data[0] == 0 && data[1] == 3) { int counter = 2; while (counter < data.Length) { byte playerID = data[counter]; int nameLength = (data[counter + 1]); string name = System.Text.Encoding.Default.GetString(data, counter + 2, nameLength); manager.SetPlayerName(playerID, name); counter += nameLength + 2; } } // Receiving other players car if (data.Length >= 2 && data[0] == 0 && data[1] == 7) { byte playerID = data[2]; int byteLength = (data[3] << 24) | (data[4] << 16) | (data[5] << 8) | (data[6]); byte[] carBytes = new byte[byteLength]; for (int i = 0; i < carBytes.Length; i++) { carBytes[i] = data[i + 7]; } manager.SetPlayerCarBytes(playerID, carBytes); } // Player disconnected if (data.Length >= 2 && data[0] == 0 && data[1] == 22) { byte playerID = data[2]; manager.RemovePlayer(playerID); } // Machinegun Button Press if (data.Length >= 2 && data[0] == 0 && data[1] == 25) { byte playerID = data[2]; byte buttonID = data[3]; bool buttonDown = data[4] == 1 ? true : false; manager.SetOtherShooting(playerID, buttonID, buttonDown); } // Damage Player if (data.Length >= 2 && data[0] == 0 && data[1] == 28) { byte playerDoingDamageID = data[2]; byte playerReceivingDamageID = data[3]; float damage = System.BitConverter.ToSingle(data, 4); manager.DoDamageToPlayer(playerReceivingDamageID, damage); } // Bullet Impact Spawn if (data.Length >= 2 && data[0] == 0 && data[1] == 27) { byte playerDoingDamageID = data[2]; byte weaponID = data[3]; float xPos = System.BitConverter.ToSingle(data, 4); float yPos = System.BitConverter.ToSingle(data, 8); float zPos = System.BitConverter.ToSingle(data, 12); //manager.SetOtherShooting(playerID, buttonID, buttonDown); } } } if (network.HasUdpMessage) { byte[] data = network.GetUdpMessage(); if (data == null) { Debug.Log("Received NULL UDP"); } else { //Debug.Log("Received UDP with length: " + data.Length); // Receiving positions if (data.Length >= 3 && data[0] == 0 && data[1] == 14) { for (int i = 2; i < data.Length; i += 41) { byte playersID = data[i]; float xPos = System.BitConverter.ToSingle(data, i + 1); float yPos = System.BitConverter.ToSingle(data, i + 5); float zPos = System.BitConverter.ToSingle(data, i + 9); float xRot = System.BitConverter.ToSingle(data, i + 13); float yRot = System.BitConverter.ToSingle(data, i + 17); float zRot = System.BitConverter.ToSingle(data, i + 21); float wRot = System.BitConverter.ToSingle(data, i + 25); float xVel = System.BitConverter.ToSingle(data, i + 29); float yVel = System.BitConverter.ToSingle(data, i + 33); float zVel = System.BitConverter.ToSingle(data, i + 37); if (manager.otherPlayers != null && manager.otherPlayers[playersID] != null && manager.otherPlayers[playersID].GetComponent <OtherCar>().Model3DLoaded) { //manager.otherPlayers[playersID].transform.position = Vector3.Lerp(manager.otherPlayers[playersID].transform.position, new Vector3(xPos, yPos, zPos), manager.lerpRate); manager.otherPlayers[playersID].transform.position = new Vector3(xPos, yPos, zPos); //manager.possesToLerpTp[playersID] = new Vector4(xPos, yPos, zPos, Mathf.Sqrt(wRot)); //Debug.Log("Velocity: " + wRot); manager.otherPlayers[playersID].transform.rotation = Quaternion.Euler(xRot, yRot, zRot); manager.otherPlayers[playersID].GetComponent <OtherCar>().Velocity = new Vector3(xVel, yVel, zVel); manager.PosInterpol.AddInformation(playersID, new Vector3(xPos, yPos, zPos), new Vector3(xRot, yRot, zRot), new Vector3(xVel, yVel, zVel)); } } } } } }