Exemple #1
0
        void DoDestroyWithRecycle()
        {
            var recycleName       = Popup.GetRecycleName(this.name);
            var recycleInstOrigin = new RecycleInstance {
                name = recycleName, pop = this,
            };

            this.isRecycled = true;
            Popup.recycles.AddLast(recycleInstOrigin);
            recycleInstOrigin.waitHandle = Wait.Active(0.1f, false, (p) =>
            {
                var recycleNode = Popup.FindRecycleNode(recycleName);
                if (null != recycleNode)
                {
                    var recycleInst = recycleNode.Value;
                    Popup.RemoveRecycleNode(recycleNode);

                    var pop = recycleInst.pop;
                    if (pop)
                    {
                        pop.DoDestroy();
                    }
                }
            });
        }
Exemple #2
0
        protected void SetStateGotoNextPresentWithFO(Type nextPresentType,
                                                     float delay              = 0.125f,
                                                     object openArg           = null,
                                                     Action <Action> onWait   = null,
                                                     Action onComplete        = null,
                                                     AsyncOperation preloaded = null)
        {
            this.SetState(99999);

            var h = Wait.Active(9999999, true, null);

            if (null == preloaded)
            {
                preloaded = SceneManager.LoadSceneAsync(nextPresentType.Name, LoadSceneMode.Additive);
                preloaded.allowSceneActivation = false;
            }

            var start = Time.time;
            var view  = this.View;

            this.AddStateTask(() =>
            {
                var alpha       = 1 - Mathf.Clamp01((Time.time - start) / delay);
                view.GroupAlpha = alpha;
                if (0 < alpha)
                {
                    return;
                }

                if (0.9f <= preloaded.progress)
                {
                    Wait.Stop(h, false, true);

                    if (null != onWait)
                    {
                        onWait(() =>
                        {
                            Present.OpenNextPresent(nextPresentType, new Present.LoadRuleData(preloaded), openArg, onComplete);
                        });

                        this.ClearStateTask();
                    }
                    else
                    {
                        Present.OpenNextPresent(nextPresentType, new Present.LoadRuleData(preloaded), openArg, onComplete);
                    }
                }
            });
        }