Example #1
0
 public static IEnumerator EnumLuaCoroutine(LuaOnStackFunc lfunc)
 {
     if (lfunc != null)
     {
         LuaThread lthd = new LuaThread(lfunc);
         return(EnumLuaCoroutine(lthd));
     }
     else
     {
         return(CoroutineRunner.GetEmptyEnumerator());
     }
 }
Example #2
0
        public static int ClrFuncCoroutine(IntPtr l)
        {
            var oldtop = l.gettop();

            if (l.isfunction(1))
            {
                var lfunc = new LuaOnStackFunc(l, 1);
                var co    = GlobalLua.StartLuaCoroutine(lfunc);
                l.settop(oldtop);
                l.PushLua(co);
            }

            return(l.gettop() - oldtop);
        }
Example #3
0
        public static int ClrFuncBehavCoroutine(IntPtr l)
        {
            var oldtop = l.gettop();

            if (l.IsObject(1) && l.isfunction(2))
            {
                var behav = l.GetLua <UnityEngine.MonoBehaviour>(1);
                var lfunc = new LuaOnStackFunc(l, 2);
                var co    = GlobalLua.StartLuaCoroutineForBehav(behav, lfunc);
                l.settop(oldtop);
                l.PushLua(co);
            }

            return(l.gettop() - oldtop);
        }
Example #4
0
 public static Coroutine StartLuaCoroutineForBehav(this MonoBehaviour behav, LuaOnStackFunc lfunc)
 {
     if (behav != null)
     {
         var work = EnumLuaCoroutine(lfunc);
         if (work is IDisposable)
         {
             var info = new CoroutineRunner.CoroutineInfo()
             {
                 behav = behav, work = work
             };
             return(info.coroutine = behav.StartCoroutine(CoroutineRunner.SafeEnumerator(work, info)));
         }
         else
         {
             return(behav.StartCoroutine(EnumLuaCoroutine(lfunc)));
         }
     }
     else
     {
         return(CoroutineRunner.StartCoroutine(EnumLuaCoroutine(lfunc)));
     }
 }
Example #5
0
 public static Coroutine StartLuaCoroutine(LuaOnStackFunc lfunc)
 {
     return(StartLuaCoroutineForBehav(null, lfunc));
 }