Пример #1
0
        protected internal virtual void DoResume()
        {
#if ENABLE_PROFILER && ENABLE_PROFILER_LUA_DEEP && !DISABLE_PROFILER_LUA_COROUTINE
            string simpleStack = L.GetSimpleStackInfo(8);
            using (var pcon = new Capstones.UnityFramework.ProfilerContext("LuaCoroutine: " + simpleStack))
#endif
            ResumeRaw(0);
        }
Пример #2
0
        protected internal override void DoResume()
        {
            if (!ReferenceEquals(_Func, null) && L != IntPtr.Zero)
            {
                if (_NeedRestart)
                {
                    _NeedRestart = false;
                    _IsDone      = false;
                    if (ReferenceEquals(_Func, null))
                    {
                        L.settop(0);
                        return;
                    }
                    L.PushLua(_Func);
                    L.insert(1);
#if ENABLE_PROFILER && ENABLE_PROFILER_LUA_DEEP && !DISABLE_PROFILER_LUA_COROUTINE
                    if (_ProfilerShownName == null)
                    {
                        System.Text.StringBuilder sbName = new System.Text.StringBuilder();
                        sbName.Append("LuaCoroutine in ");
                        string funcName, fileName;
                        int    lineStart, lineCur;
                        L.GetFuncInfo(1, out funcName, out fileName, out lineStart, out lineCur);
                        sbName.Append(fileName);
                        sbName.Append(" at ");
                        sbName.Append(lineStart);
                        _ProfilerShownName = sbName.ToString();
                    }
                    using (var pcon = new Capstones.UnityFramework.ProfilerContext(_ProfilerShownName))
                        using (var pconi = new Capstones.UnityFramework.ProfilerContext("at start"))
#endif
                    ResumeRaw(1);
                }
                else if (IsRunning)
                {
#if ENABLE_PROFILER && ENABLE_PROFILER_LUA_DEEP && !DISABLE_PROFILER_LUA_COROUTINE
                    string simpleStack = L.GetSimpleStackInfo(8);
                    using (var pcon = new Capstones.UnityFramework.ProfilerContext(_ProfilerShownName))
                        using (var pconi = new Capstones.UnityFramework.ProfilerContext(simpleStack))
#endif
                    ResumeRaw(0);
                }
            }
        }
Пример #3
0
        public static void PushLuaExplicit <T>(this IntPtr l, T val)
        {
            var         type = typeof(T);
            ILuaTypeHub sub  = LuaTypeHub.GetTypeHub(type);

            if (sub != null)
            {
                if (sub.ShouldCache)
                {
                    if (sub.PushFromCache(l, val))
                    {
                        return;
                    }
                }
                var    sub2 = sub as ILuaPush <T>;
                IntPtr h;
                if (sub2 != null)
                {
                    h = sub2.PushLua(l, val);
                }
                else
                {
#if ENABLE_PROFILER && ENABLE_PROFILER_LUA_DEEP && !DISABLE_PROFILER_LUA_GC_ALLOC
                    using (var pcon = new Capstones.UnityFramework.ProfilerContext("box val of " + typeof(T).ToString()))
#endif
                    h = sub.PushLua(l, val);
                }
                if (sub.ShouldCache && h != IntPtr.Zero)
                {
                    LuaObjCache.RegObj(l, val, -1, h);
                }
            }
            else
            {
                PushLuaRawObject(l, val);
                l.PushCommonMetaTable();
                l.setmetatable(-2);
            }
        }