public static EaseType GetType(EaseClass ec, EaseDir dir) { switch (ec) { case EaseClass.Linear: case EaseClass.Spring: dir = EaseDir.In; //No dir break; } return((EaseType)((int)ec << Const.DirCount | (int)dir)); }
public static Ease.UCL_Ease Create(EaseClass ease) { switch (ease) { ///* case EaseClass.Linear: return(new Ease.Linear()); case EaseClass.Spring: return(new Ease.Spring()); case EaseClass.Bounce: return(new Ease.Bounce()); case EaseClass.Elastic: return(new Ease.Elastic()); case EaseClass.Sin: return(new Ease.Sin()); case EaseClass.Quad: return(new Ease.Quad()); case EaseClass.Cubic: return(new Ease.Cubic()); case EaseClass.Quart: return(new Ease.Quart()); case EaseClass.Quint: return(new Ease.Quint()); case EaseClass.Expo: return(new Ease.Expo()); case EaseClass.Circ: return(new Ease.Circ()); //*/ default: //Debug.LogWarning("Ease:" + ease.ToString()); Type type = Type.GetType("UCL.TweenLib.Ease." + ease.ToString()); var e = Activator.CreateInstance(type) as Ease.UCL_Ease; if (e != null) { return(e); } return(new Ease.UCL_Ease()); } /* * https://stackoverflow.com/questions/493490/converting-a-string-to-a-class-name * Type elementType = Type.GetType("FullyQualifiedName.Of.Customer"); * Type listType = typeof(List<>).MakeGenericType(new Type[] { elementType }); * * object list = Activator.CreateInstance(listType); */ }
/// <summary> /// Use Common UCL_Ease if you don't need to modified Ease /// </summary> /// <param name="ease"></param> /// <returns></returns> public static Ease.UCL_Ease Get(EaseClass ease, EaseDir dir = EaseDir.In) { lock (m_EaseDic) { if (!m_EaseDic.ContainsKey(ease)) { Dictionary <EaseDir, Ease.UCL_Ease> ease_dic = new Dictionary <EaseDir, Ease.UCL_Ease>(); foreach (EaseDir e_dir in Enum.GetValues(typeof(EaseDir))) { ease_dic.Add(e_dir, Create(ease).SetDir(e_dir)); } m_EaseDic[ease] = ease_dic;//Create(ease); } } return(m_EaseDic[ease][dir]); }
virtual public UCL_Tweener SetEase(EaseClass ease, EaseDir dir) { return(SetEase(EaseCreator.Get(ease, dir))); }