private void InternalTriggerRemoved(UIEventTrigger i_Trigger)
    {
        UINavbarEntry[] navbarEntries = i_Trigger.GetComponents <UINavbarEntry>();

        for (int entryIndex = 0; entryIndex < navbarEntries.Length; ++entryIndex)
        {
            UINavbarEntry navbarEntry = navbarEntries[entryIndex];
            InternalUnregister(navbarEntry);
        }

        m_Dirty = true;
    }
    private bool InternalUnregister(UINavbarEntry i_Entry)
    {
        int index = i_Entry.sortIndex;

        if (index < 0 || index >= m_RegisteredEntries.Count)
        {
            return(false);
        }

        List <UINavbarEntry> entries = m_RegisteredEntries[index];

        return(entries.Remove(i_Entry));
    }
    // INTERNALS

    private bool InternalRegister(UINavbarEntry i_Entry)
    {
        int index = i_Entry.sortIndex;

        if (index < 0 || index >= m_RegisteredEntries.Count)
        {
            return(false);
        }

        List <UINavbarEntry> entries = m_RegisteredEntries[index];

        entries.Add(i_Entry);

        return(true);
    }
    private void InternalRefreshNavbar()
    {
        for (int index = 0; index < m_NavbarItems.Length; ++index)
        {
            UINavbarItem navbarItem = m_NavbarItems[index];
            if (navbarItem != null)
            {
                List <UINavbarEntry> entries = m_RegisteredEntries[index];
                if (entries.Count > 0)
                {
                    // Set this item visible.

                    navbarItem.isVisible = true;

                    // Set activation state.

                    UINavbarEntry firstEntry = entries[0];

                    if (m_Dirty)
                    {
                        Sprite sprite = GetSprite(firstEntry.iconKey);

                        navbarItem.SetIcon(sprite);
                        navbarItem.SetText(firstEntry.text);
                    }

                    navbarItem.isActive = firstEntry.isActive;
                }
                else
                {
                    // Set this item hidden.

                    navbarItem.isVisible = false;
                }
            }
        }

        m_Dirty = false;
    }
    private void InternalFocusChaged(GameObject i_CurrFocus, GameObject i_PrevFocus)
    {
        if (i_PrevFocus != null)
        {
            UINavbarEntry[] navbarEntries = i_PrevFocus.GetComponents <UINavbarEntry>();
            for (int entryIndex = 0; entryIndex < navbarEntries.Length; ++entryIndex)
            {
                UINavbarEntry navbarEntry = navbarEntries[entryIndex];
                InternalUnregister(navbarEntry);
            }
        }

        if (i_CurrFocus != null)
        {
            UINavbarEntry[] navbarEntries = i_CurrFocus.GetComponents <UINavbarEntry>();
            for (int entryIndex = 0; entryIndex < navbarEntries.Length; ++entryIndex)
            {
                UINavbarEntry navbarEntry = navbarEntries[entryIndex];
                InternalRegister(navbarEntry);
            }
        }

        m_Dirty = true;
    }