public void PopulateChannelPanel(ChatChannel channelsAvailable, ChatChannel channelsSelected) { foreach (ChatChannel channel in Enum.GetValues(typeof(ChatChannel))) { if (channel == ChatChannel.None) { continue; } if ((channelsAvailable & channel) == channel) { GameObject channelToggleItem = Instantiate(channelToggle, channelPanel.transform); Toggle toggle = channelToggleItem.GetComponent <Toggle>(); toggle.GetComponent <UIToggleChannel>().channel = channel; toggle.GetComponentInChildren <Text>().text = IconConstants.ChatPanelIcons[channel]; toggle.onValueChanged.AddListener(Toggle_Channel); if ((channelsSelected & channel) == channel) { toggle.isOn = true; } else { toggle.isOn = false; } } } float width = channelPanel.GetChild(0).GetComponent <RectTransform>().rect.width; int count = channelPanel.transform.childCount; LayoutElement layoutElement = channelPanel.GetComponent <LayoutElement>(); HorizontalLayoutGroup horizontalLayoutGroup = channelPanel.GetComponent <HorizontalLayoutGroup>(); layoutElement.minWidth = width * count + horizontalLayoutGroup.spacing * count; }
public void PopulateChannelPanel(ChatChannel channelsAvailable, ChatChannel channelsSelected) { foreach (ChatChannel currentChannel in Enum.GetValues(typeof(ChatChannel))) { if (currentChannel == ChatChannel.None || (channelsAvailable & currentChannel) != currentChannel) { continue; } GameObject channelToggleItem = Instantiate(channelToggle, channelPanel.transform); Toggle toggle = channelToggleItem.GetComponent <Toggle>(); toggle.GetComponent <UIToggleChannel>().channel = currentChannel; toggle.GetComponentInChildren <Text>().text = IconConstants.ChatPanelIcons[currentChannel]; toggle.onValueChanged.AddListener(Toggle_Channel); toggle.isOn = (channelsSelected & currentChannel) == currentChannel; if (!ChannelToggles.ContainsKey(currentChannel)) { ChannelToggles.Add(currentChannel, toggle); } } float width = 64f; int count = ChannelToggles.Count; LayoutElement layoutElement = channelPanel.GetComponent <LayoutElement>(); HorizontalLayoutGroup horizontalLayoutGroup = channelPanel.GetComponent <HorizontalLayoutGroup>(); layoutElement.minWidth = width * count + horizontalLayoutGroup.spacing * count; // Logger.Log($"Populating wid={width} cnt={count} minWid={layoutElement.minWidth}"); }