/// <summary>
        /// Update the current state of the button.
        /// </summary>
        public void UpdateState()
        {
            if (Controller == null)
            {
                return;
            }

            Button meButton = GetComponent <Button>();

            if (meButton == null)
            {
                return;
            }

            RouterMode currentMode = Controller.Mode;
            bool       active      = false;

            for (int i = 0; i < EnabledModes.Length; ++i)
            {
                if (EnabledModes[i] == currentMode)
                {
                    active = true;
                    if (i < ModeSprites.Length && ModeSprites[i] != null)
                    {
                        meButton.image.sprite = ModeSprites[i];
                    }
                }
            }

            meButton.interactable = active;
        }
 /// <summary>
 /// Respond to mode changes in the router and update the UI accordingly.
 /// </summary>
 /// <param name="mode">The new router mode to reflect.</param>
 public void OnControllerModeChange(RouterMode mode)
 {
     if (mode == RouterMode.Connected || mode == RouterMode.Connecting)
     {
         _connectButton.gameObject.SetActive(false);
         _disconnectButton.gameObject.SetActive(true);
         _hostEntry.enabled = false;
         _portEntry.enabled = false;
         // Reflect the current connection in the host/port items.
         if (Controller != null)
         {
             IPEndPoint connection = Controller.Connection;
             if (connection != null)
             {
                 _hostEntry.text = connection.Address.ToString();
                 _portEntry.text = connection.Port.ToString();
             }
         }
     }
     else
     {
         _connectButton.gameObject.SetActive(true);
         _disconnectButton.gameObject.SetActive(false);
         _hostEntry.enabled = true;
         _portEntry.enabled = true;
     }
 }
 void Update()
 {
     if (_controller != null)
     {
         if (LastMode != _controller.Mode)
         {
             LastMode = _controller.Mode;
             ShowMode();
         }
     }
 }
 void Start()
 {
     LastMode = RouterMode.Idle;
     ShowMode();
 }