public void ShowChoiceButtons(DialogueFragment hubFragment) { HideChoiceButtons(); if (hubFragment.OutputPins[0].Connections.Count <= 0) { Debug.LogError("Hub has no choices!"); } List <SortingHelper> sorts = new List <SortingHelper>(); for (int i = 0; i < hubFragment.OutputPins[0].Connections.Count; ++i) { DialogueFragment frag = hubFragment.OutputPins[0].Connections[i].Target as DialogueFragment; IObjectWithPosition positionObject = hubFragment.OutputPins[0].Connections[i].Target as IObjectWithPosition; SortingHelper sort = new SortingHelper(); sort.Fragment = frag; sort.PositionY = positionObject.Position.y; sorts.Add(sort); } sorts = sorts.OrderBy(f => f.PositionY).ToList(); for (int i = 0; i < sorts.Count; ++i) { if (sorts[i].Fragment.InputPins[0].Evaluate()) { DialogueChoiceButton choiceButton = Instantiate(ButtonChoiceTemplate); choiceButton.gameObject.SetActive(true); choiceButton.gameObject.transform.SetParent(PanelChoice, false); choiceButton.SetChoice(i, sorts[i].Fragment); ButtonChoiceList.Add(choiceButton); } } }