| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | 
							- using System.Collections.Generic;
 
- using UnityEngine;
 
- namespace FairyGUI
 
- {
 
-     internal static class TweenManager
 
-     {
 
-         static GTweener[] _activeTweens = new GTweener[30];
 
-         static List<GTweener> _tweenerPool = new List<GTweener>(30);
 
-         static int _totalActiveTweens = 0;
 
-         static bool _inited = false;
 
-         internal static GTweener CreateTween()
 
-         {
 
-             if (!_inited)
 
-                 Init();
 
-             GTweener tweener;
 
-             int cnt = _tweenerPool.Count;
 
-             if (cnt > 0)
 
-             {
 
-                 tweener = _tweenerPool[cnt - 1];
 
-                 _tweenerPool.RemoveAt(cnt - 1);
 
-             }
 
-             else
 
-                 tweener = new GTweener();
 
-             tweener._Init();
 
-             _activeTweens[_totalActiveTweens++] = tweener;
 
-             if (_totalActiveTweens == _activeTweens.Length)
 
-             {
 
-                 GTweener[] newArray = new GTweener[_activeTweens.Length + Mathf.CeilToInt(_activeTweens.Length * 0.5f)];
 
-                 _activeTweens.CopyTo(newArray, 0);
 
-                 _activeTweens = newArray;
 
-             }
 
-             return tweener;
 
-         }
 
-         internal static bool IsTweening(object target, TweenPropType propType)
 
-         {
 
-             if (target == null)
 
-                 return false;
 
-             bool anyType = propType == TweenPropType.None;
 
-             for (int i = 0; i < _totalActiveTweens; i++)
 
-             {
 
-                 GTweener tweener = _activeTweens[i];
 
-                 if (tweener != null && tweener.target == target && !tweener._killed
 
-                     && (anyType || tweener._propType == propType))
 
-                     return true;
 
-             }
 
-             return false;
 
-         }
 
-         internal static bool KillTweens(object target, TweenPropType propType, bool completed)
 
-         {
 
-             if (target == null)
 
-                 return false;
 
-             bool flag = false;
 
-             int cnt = _totalActiveTweens;
 
-             bool anyType = propType == TweenPropType.None;
 
-             for (int i = 0; i < cnt; i++)
 
-             {
 
-                 GTweener tweener = _activeTweens[i];
 
-                 if (tweener != null && tweener.target == target && !tweener._killed
 
-                     && (anyType || tweener._propType == propType))
 
-                 {
 
-                     tweener.Kill(completed);
 
-                     flag = true;
 
-                 }
 
-             }
 
-             return flag;
 
-         }
 
-         internal static GTweener GetTween(object target, TweenPropType propType)
 
-         {
 
-             if (target == null)
 
-                 return null;
 
-             int cnt = _totalActiveTweens;
 
-             bool anyType = propType == TweenPropType.None;
 
-             for (int i = 0; i < cnt; i++)
 
-             {
 
-                 GTweener tweener = _activeTweens[i];
 
-                 if (tweener != null && tweener.target == target && !tweener._killed
 
-                     && (anyType || tweener._propType == propType))
 
-                 {
 
-                     return tweener;
 
-                 }
 
-             }
 
-             return null;
 
-         }
 
-         internal static void Update()
 
-         {
 
-             int cnt = _totalActiveTweens;
 
-             int freePosStart = -1;
 
-             for (int i = 0; i < cnt; i++)
 
-             {
 
-                 GTweener tweener = _activeTweens[i];
 
-                 if (tweener == null)
 
-                 {
 
-                     if (freePosStart == -1)
 
-                         freePosStart = i;
 
-                 }
 
-                 else if (tweener._killed)
 
-                 {
 
-                     tweener._Reset();
 
-                     _tweenerPool.Add(tweener);
 
-                     _activeTweens[i] = null;
 
-                     if (freePosStart == -1)
 
-                         freePosStart = i;
 
-                 }
 
-                 else
 
-                 {
 
-                     if ((tweener._target is GObject) && ((GObject)tweener._target)._disposed)
 
-                         tweener._killed = true;
 
-                     else if (!tweener._paused)
 
-                         tweener._Update();
 
-                     if (freePosStart != -1)
 
-                     {
 
-                         _activeTweens[freePosStart] = tweener;
 
-                         _activeTweens[i] = null;
 
-                         freePosStart++;
 
-                     }
 
-                 }
 
-             }
 
-             if (freePosStart >= 0)
 
-             {
 
-                 if (_totalActiveTweens != cnt) //new tweens added
 
-                 {
 
-                     int j = cnt;
 
-                     cnt = _totalActiveTweens - cnt;
 
-                     for (int i = 0; i < cnt; i++)
 
-                     {
 
-                         _activeTweens[freePosStart++] = _activeTweens[j];
 
-                         _activeTweens[j] = null;
 
-                         j++;
 
-                     }
 
-                 }
 
-                 _totalActiveTweens = freePosStart;
 
-             }
 
-         }
 
-         internal static void Clean()
 
-         {
 
-             _tweenerPool.Clear();
 
-         }
 
-         static void Init()
 
-         {
 
-             _inited = true;
 
-             if (Application.isPlaying)
 
-             {
 
-                 GameObject gameObject = new GameObject("[FairyGUI.TweenManager]");
 
-                 gameObject.hideFlags = HideFlags.HideInHierarchy;
 
-                 gameObject.SetActive(true);
 
-                 Object.DontDestroyOnLoad(gameObject);
 
-                 gameObject.AddComponent<TweenEngine>();
 
-             }
 
-         }
 
-         class TweenEngine : MonoBehaviour
 
-         {
 
-             void Update()
 
-             {
 
-                 TweenManager.Update();
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |