protected void Reload(ScrollDataView.ReloadEventArgs p_args) { var v_oldArgs = _cachedReloadEventArgs; _cachedReloadEventArgs = p_args; //Cancel previous reloads if (_reloadRoutine != null) { StopCoroutine(_reloadRoutine); _reloadRoutine = null; } var v_routine = ReloadRoutine(v_oldArgs, p_args); //Execure Delayed if (m_delayedReload && enabled && gameObject.activeInHierarchy) { _reloadRoutine = StartCoroutine(v_routine); } else { //Execute Synchronously while (v_routine.MoveNext()) { } } }
protected virtual IEnumerator ReloadRoutine(ScrollDataView.ReloadEventArgs p_oldArgs, ScrollDataView.ReloadEventArgs p_newArgs) { yield return(null); ApplyReload(p_oldArgs, p_newArgs); if (OnReload != null) { OnReload.Invoke(); } _reloadRoutine = null; }
protected override void ApplyReload(ScrollDataView.ReloadEventArgs p_oldArgs, ScrollDataView.ReloadEventArgs p_newArgs) { var v_data = p_newArgs.Data as GenericMenuElementData; var v_sender = p_newArgs.Sender != null?p_newArgs.Sender.GetComponentInParent <GenericMenuUI>() : null; if (v_sender == null && p_newArgs.Sender != null) { var v_config = p_newArgs.Sender.GetComponentInParent <GenericMenuUIPage>(); if (v_config != null) { v_sender = v_config.Parent; } } if (v_data != null) { if (m_text != null) { m_text.text = v_data.Name; } if (m_image != null) { m_image.sprite = v_data.Icon; } if (m_toggle != null) { var v_index = v_sender != null && v_sender != null?v_sender.IndexOf(v_data) : -1; if (v_data.IsFolder) { var v_item = v_sender != null?v_sender.GetCurrentSelectedItem() : null; m_toggle.isOn = v_item != null && v_item.GetPath().StartsWith(v_data.GetPath()); } else { m_toggle.isOn = v_sender != null && v_sender != null && v_index >= 0 && v_sender.SelectedIndex == v_index; } } if (m_folderIconContainer != null) { m_folderIconContainer.gameObject.SetActive(v_data.IsFolder); } } }
void IReloadableDataViewElement.Reload(ScrollDataView.ReloadEventArgs p_args) { Reload(p_args); }
/// <summary> /// Override this function to implement your own custom logic to reload /// </summary> protected virtual void ApplyReload(ScrollDataView.ReloadEventArgs p_oldArgs, ScrollDataView.ReloadEventArgs p_newArgs) { }