public void ClearPanels() { if (Panels.Count <= 1) { Debug.Log("Already at base panel"); return; } var oldPanel = Panels[Panels.Count - 1]; Panels.RemoveRange(1, Panels.Count - 1); var newPanel = Panels[Panels.Count - 1]; PanelChanged?.Invoke(this, new PanelChangedEventArgs { OldPanel = oldPanel, NewPanel = newPanel, ChangeType = PanelChangeType.CLEAR }); }
public void PopPanel() { if (Panels.Count <= 1) { //Debug.LogError("Cannot pop, must be showing at least one panel"); return; } var oldPanel = Panels[Panels.Count - 1]; oldPanel.gameObject.SetActive(false); Panels.RemoveAt(Panels.Count - 1); var newPanel = Panels[Panels.Count - 1]; newPanel.gameObject.SetActive(true); PanelChanged?.Invoke(this, new PanelChangedEventArgs { OldPanel = oldPanel, NewPanel = newPanel, ChangeType = PanelChangeType.POP }); }
public void PushPanel <T>(object args = null) where T : Panel { var panel = GetComponentInChildren <T>(includeInactive: true); if (panel == null) { Debug.LogError($"No panel of type {typeof(T)} exists"); return; } var oldPanel = Panels[Panels.Count - 1]; oldPanel.gameObject.SetActive(false); Panels.Add(panel); var newPanel = Panels[Panels.Count - 1]; newPanel.gameObject.SetActive(true); PanelChanged?.Invoke(this, new PanelChangedEventArgs { OldPanel = oldPanel, NewPanel = newPanel, ChangeType = PanelChangeType.PUSH }); newPanel.Init(args); }
public void OnPanelChanged(SideBarEventArgs e) { PanelChanged?.Invoke(this, e); }