// ---------[ EVENTS ]--------- public void NotifyTagClicked(ModTagDisplayComponent display) { if (tagClicked != null) { tagClicked(display); } }
/// <summary>Event handler for a tag being clicked.</summary> private void TagClickHandler(ModTagDisplayComponent display) { string tagName = display.data.tagName; if(this.m_selectedTags.Contains(tagName)) { this.m_selectedTags.Remove(tagName); } else { this.m_selectedTags.Add(tagName); } this.view.SetTagFilter(this.m_selectedTags); }
private void PresentData_Editor(IEnumerable <ModTagDisplayData> displayData) { Debug.Assert(!Application.isPlaying); if (loadingOverlay != null) { loadingOverlay.SetActive(false); } // clear if (m_tagDisplays != null) { foreach (ModTagDisplayComponent display in m_tagDisplays) { GameObject displayGO = display.gameObject; UnityEditor.EditorApplication.delayCall += () => { DestroyImmediate(displayGO); }; } m_tagDisplays.Clear(); } if (tagDisplayPrefab == null || container == null) { return; } // create foreach (ModTagDisplayData tagData in displayData) { ModTagDisplayData tdata = tagData; UnityEditor.EditorApplication.delayCall += () => { GameObject displayGO = GameObject.Instantiate(tagDisplayPrefab, new Vector3(), Quaternion.identity, container); displayGO.hideFlags = HideFlags.HideAndDontSave | HideFlags.HideInInspector; ModTagDisplayComponent display = displayGO.GetComponent <ModTagDisplayComponent>(); display.data = tdata; m_tagDisplays.Add(display); }; } // TODO: fix layouting? }
private void PresentData(IList <ModTagDisplayData> displayData) { Debug.Assert(displayData != null); if (loadingOverlay != null) { loadingOverlay.SetActive(false); } int newCount = displayData.Count; // remove unneeded displays while (newCount < m_tagDisplays.Count) { ModTagDisplayComponent display = m_tagDisplays[newCount]; m_tagDisplays.RemoveAt(newCount); GameObject.Destroy(display.gameObject); } // create new displays while (m_tagDisplays.Count < newCount) { GameObject displayGO = GameObject.Instantiate(tagDisplayPrefab); displayGO.transform.SetParent(container, false); ModTagDisplayComponent display = displayGO.GetComponent <ModTagDisplayComponent>(); display.Initialize(); display.onClick += NotifyTagClicked; m_tagDisplays.Add(display); } // assign data for (int i = 0; i < newCount; ++i) { this.m_tagDisplays[i].data = displayData[i]; } // fix layouting if (this.isActiveAndEnabled) { StartCoroutine(LateUpdateLayouting()); } }
private void CollectChildTags() { m_tagDisplays = new List <ModTagDisplayComponent>(); // TODO(@jackson): Why check isPlaying? #if UNITY_EDITOR if (Application.isPlaying || container != null) #endif { foreach (Transform t in container) { ModTagDisplayComponent tagDisplay = t.GetComponent <ModTagDisplayComponent>(); if (tagDisplay != null) { m_tagDisplays.Add(tagDisplay); } } } }
// ---------[ EVENTS ]--------- private void TagClickHandler(ModTagDisplayComponent display) { if (m_selectedTags.Contains(display.data.tagName)) { m_selectedTags.Remove(display.data.tagName); if (tagFilterRemoved != null) { tagFilterRemoved(display.data.tagName); } } else { m_selectedTags.Add(display.data.tagName); if (tagFilterAdded != null) { tagFilterAdded(display.data.tagName); } } }
private void PresentData(IEnumerable <ModTagDisplayData> displayData) { Debug.Assert(displayData != null); if (loadingOverlay != null) { loadingOverlay.SetActive(false); } // clear foreach (ModTagDisplayComponent display in m_tagDisplays) { GameObject.Destroy(display.gameObject); } m_tagDisplays.Clear(); // create foreach (ModTagDisplayData tagData in displayData) { GameObject displayGO = GameObject.Instantiate(tagDisplayPrefab, new Vector3(), Quaternion.identity, container); ModTagDisplayComponent display = displayGO.GetComponent <ModTagDisplayComponent>(); display.Initialize(); display.data = tagData; display.onClick += NotifyTagClicked; m_tagDisplays.Add(display); } // fix layouting if (this.isActiveAndEnabled) { StartCoroutine(LateUpdateLayouting()); } }