private void FixedUpdate()
    {
        if (client != null && client.Connected)
        {
            OnNetworkReceived();

            lastDistance = Vector3.Distance(lastNetworkedPosition, player.transform.position);
            if (lastDistance >= MIN_DISTANCE_TO_SEND_POSITION)
            {
                var message = new NetworkMessage();

                message.AddTagPacket(NetworkTagPacket.PlayerPosition);
                message.AddFloat(player.transform.position.x);
                message.AddFloat(player.transform.position.y);
                message.AddFloat(player.transform.position.z);

                client.Send(message.Buffer);

                lastNetworkedPosition = player.transform.position;
            }
        }

        foreach (var player in netPlayersDictionary)
        {
            if (!player.Value.GameObjectAdded)
            {
                player.Value.GameObjectAdded = true;
                player.Value.GameObject      = Instantiate(netPlayerPrefab, player.Value.Position, Quaternion.identity);
            }
            else
            {
                player.Value.GameObject.transform.position = player.Value.Position;
            }
        }
    }