public void UpdateEventList() { if (m_AttachedComponent == null) { if (m_EventsContainer != null) { m_EventsContainer.Clear(); } m_Events.Clear(); } else { var eventNames = GetEventNames().ToArray(); foreach (var removed in m_Events.Keys.Except(eventNames).ToArray()) { var ui = m_Events[removed]; m_EventsContainer.Remove(ui); m_Events.Remove(removed); } foreach (var added in eventNames.Except(m_Events.Keys).ToArray()) { var tpl = VFXView.LoadUXML("VFXComponentBoard-event"); tpl.CloneTree(m_EventsContainer); VFXComponentBoardEventUI newUI = m_EventsContainer.Children().Last() as VFXComponentBoardEventUI; if (newUI != null) { newUI.Setup(); newUI.name = added; m_Events.Add(added, newUI); } } if (!m_Events.Values.Any(t => t.nameHasFocus)) { SortEventList(); } } }
public void UpdateEventList() { if (m_AttachedComponent == null) { if (m_EventsContainer != null) { m_EventsContainer.Clear(); } m_Events.Clear(); } else { var eventNames = controller.contexts.Select(t => t.model).OfType <VFXBasicEvent>().Select(t => t.eventName).Except(staticEventNames).Distinct().OrderBy(t => t).ToArray(); foreach (var removed in m_Events.Keys.Except(eventNames).ToArray()) { var ui = m_Events[removed]; m_EventsContainer.Remove(ui); m_Events.Remove(removed); } foreach (var added in eventNames.Except(m_Events.Keys).ToArray()) { var tpl = Resources.Load <VisualTreeAsset>("uxml/VFXComponentBoard-event"); tpl.CloneTree(m_EventsContainer, new Dictionary <string, VisualElement>()); VFXComponentBoardEventUI newUI = m_EventsContainer.Children().Last() as VFXComponentBoardEventUI; if (newUI != null) { newUI.Setup(); newUI.name = added; m_Events.Add(added, newUI); } } if (!m_Events.Values.Any(t => t.nameHasFocus)) { SortEventList(); } } }
void SortEventList() { var eventNames = m_Events.Keys.OrderBy(t => t); //Sort events VFXComponentBoardEventUI prev = null; foreach (var eventName in eventNames) { VFXComponentBoardEventUI current = m_Events[eventName]; if (current != null) { if (prev == null) { current.SendToBack(); } else { current.PlaceInFront(prev); } prev = current; } } }