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;
}
}
}
}