private void Internal_SetRoomData(int i_Index, tnUIRoomEntryData i_Data)
    {
        tnUIRoomEntry roomEntry = GetRoomEntry(i_Index);

        if (roomEntry == null)
        {
            return;
        }

        roomEntry.Enable();
        roomEntry.SetData(i_Data);
    }
    public void Clear()
    {
        for (int index = 0; index < m_RoomEntries.Length; ++index)
        {
            tnUIRoomEntry room = m_RoomEntries[index];

            if (room == null)
            {
                continue;
            }

            room.Clear();
        }

        m_SelectedEntry = null;
    }
    // INTERNALS

    private void Internal_SelectByIndex(int i_Index)
    {
        // Deselect.

        if (m_SelectedEntry != null)
        {
            m_SelectedEntry.Deselct();
            m_SelectedEntry = null;
        }

        // Select new.

        tnUIRoomEntry roomEntry = GetRoomEntry(i_Index);

        if (roomEntry != null)
        {
            roomEntry.Select();
            m_SelectedEntry = roomEntry;
        }
    }
    // MonoBehaviour's interface

    protected override void Awake()
    {
        base.Awake();

        // Create slots.

        int slotCount = Mathf.Max(1, m_SlotCount);

        m_RoomEntries = new tnUIRoomEntry[slotCount];

        if (m_Content != null && m_RoomEntryPrefab != null && slotCount > 0)
        {
            float slotHeight    = roomHeight;
            float contentHeight = m_Content.rect.height;
            float spacing       = (contentHeight - slotHeight * slotCount) / (slotCount - 1);

            for (int slotIndex = 0; slotIndex < slotCount; ++slotIndex)
            {
                tnUIRoomEntry room = Instantiate <tnUIRoomEntry>(m_RoomEntryPrefab);
                room.gameObject.name = "Room_" + slotIndex;
                room.transform.SetParent(m_Content, false);

                RectTransform deviceRectTransform = room.GetComponent <RectTransform>();
                if (deviceRectTransform != null)
                {
                    deviceRectTransform.pivot = UIPivot.s_TopCenter;
                    deviceRectTransform.SetAnchor(UIAnchor.s_TopCenter);

                    float y = slotIndex * (slotHeight + spacing);

                    deviceRectTransform.anchoredPosition = new Vector2(0f, -y);
                }

                m_RoomEntries[slotIndex] = room;
            }
        }
    }