FairyGUI.Transition.InternalPlay C# (CSharp) Method

InternalPlay() public method

public InternalPlay ( float delay ) : void
delay float
return void
        void InternalPlay(float delay)
        {
            _ownerBaseX = _owner.x;
            _ownerBaseY = _owner.y;

            _totalTasks = 0;
            int cnt = _items.Count;
            for (int i = 0; i < cnt; i++)
            {
                TransitionItem item = _items[i];
                if (item.targetId.Length > 0)
                    item.target = _owner.GetChildById(item.targetId);
                else
                    item.target = _owner;
                if (item.target == null)
                    continue;

                if (item.tween)
                {
                    float startTime = delay;
                    if (_reversed)
                        startTime += (_maxTime - item.time - item.duration);
                    else
                        startTime += item.time;
                    if (startTime > 0 && (item.type == TransitionActionType.XY || item.type == TransitionActionType.Size))
                    {
                        _totalTasks++;
                        item.completed = false;
                        item.tweener = DOVirtual.DelayedCall(startTime, () =>
                        {
                            item.tweener = null;
                            _totalTasks--;

                            StartTween(item, 0);
                        }, true);
                        if (_timeScale != 1)
                            item.tweener.timeScale = _timeScale;
                    }
                    else
                        StartTween(item, startTime);
                }
                else
                {
                    float startTime = delay;
                    if (_reversed)
                        startTime += (_maxTime - item.time);
                    else
                        startTime += item.time;
                    if (startTime == 0)
                        ApplyValue(item, item.value);
                    else
                    {
                        item.completed = false;
                        _totalTasks++;
                        item.tweener = DOVirtual.DelayedCall(startTime, () =>
                        {
                            item.tweener = null;
                            item.completed = true;
                            _totalTasks--;

                            ApplyValue(item, item.value);
                            if (item.hook != null)
                                item.hook();

                            CheckAllComplete();
                        }, true);
                        if (_timeScale != 1)
                            item.tweener.timeScale = _timeScale;
                    }
                }
            }
        }