public void RegisterInputSender(Client.ClientInputSender inputSender)
        {
            if (m_InputSender != null)
            {
                Debug.LogWarning($"Multiple ClientInputSenders in scene? Discarding sender belonging to {m_InputSender.gameObject.name} and adding it for {inputSender.gameObject.name} ");
            }

            m_InputSender   = inputSender;
            m_CharacterData = m_InputSender.GetComponent <NetworkCharacterState>().CharacterData;
            SetPlayerType(m_CharacterData);
        }
        public void SetHeroData(NetworkCharacterState netState)
        {
            // Make sure arrays are initialized
            InitPartyArrays();
            // Hero is always our slot 0
            m_PartyIds[0] = netState.NetworkObject.NetworkObjectId;
            SetUIFromSlotData(0, netState);
            // Hero also gets a protrait
            int appearance = netState.CharacterAppearance.Value;

            if (appearance < m_PortraitAppearances.Length)
            {
                m_HeroPortrait.sprite = m_PortraitAppearances[appearance];
            }
            // plus we track their target
            netState.TargetId.OnValueChanged += OnHeroSelectionChanged;

            m_ClientSender = netState.GetComponent <Client.ClientInputSender>();
        }