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(); } } }