Exemplo n.º 1
0
        public void CloseNotAnimated(WooPanel panel, bool notify = true)
        {
            if (panel.IsClosed())
            {
                return;
            }

            RebuildIfPanelGameObjectIsNull(panel);

            panel.gameObject.SetActive(true);
            panel.PanelState = PanelState.IsClosing;
            var children = GetChildren(panel);

            for (int i = 0; i < children.Count; i++)
            {
                Close(children[i].Panel, true, notify);
            }

            if (notify)
            {
                panel.NotifyClosingBegin();
            }

            CloseImmediately(panel, notify);

            panel.gameObject.SetActive(panel.PanelProperties.ActiveWhenClosed);
        }
Exemplo n.º 2
0
        public void PlayCloseAnimationImmdiately(WooPanel panel, bool notify = true)
        {
            panel.gameObject.SetActive(true);

            panelNodes[panel].StopCoroutines();
            panel.PanelState = PanelState.IsClosing;
            if (notify)
            {
                panel.NotifyClosingBegin();
            }

            panel.PanelState = PanelState.Closed;

            if (notify)
            {
                panel.NotifyClosingEnd();
            }

            panel.PanelState = PanelState.IsClosing;
            RewindToEndPanelAnimation(panel);
            SamplePanelAnimator(panel);
            panel.PanelState = PanelState.Closed;

            panel.gameObject.SetActive(panel.PanelProperties.ActiveWhenClosed);
        }
Exemplo n.º 3
0
        public void CloseAnimated(WooPanel panel, bool notify = true)
        {
            if (IsClosed(panel) || panelNodes[panel].IsClosing || panelNodes[panel].IsWaitingToClose)
            {
                return;
            }

            if (panel == null)
            {
                return;
            }
            RebuildIfPanelGameObjectIsNull(panel);

            panel.gameObject.SetActive(true);
            panelNodes[panel].StopCoroutines();
            panelNodes[panel].IsWaitingToClose = true;
            RewindPanelAnimation(panel);

            var children = GetChildren(panel);

            var timeForChildrenToClose = TimeForChildrenToClose(panel) * panel.PanelProperties.ChildrenToClose;

            for (int i = 0; i < children.Count; i++)
            {
                Close(children[i].Panel);
            }
            panelNodes[panel].waitingTime          = timeForChildrenToClose;
            panelNodes[panel].remainingWaitingTime = timeForChildrenToClose;

            panelNodes[panel].Invoke(timeForChildrenToClose, () =>
            {
                panelNodes[panel].IsClosing = true;

                if (notify)
                {
                    panel.NotifyClosingBegin();
                }
            });

            panelNodes[panel].Invoke(TimeToClose(panel), () =>
            {
                CloseImmediately(panel, notify);
            });
        }