コード例 #1
0
 public static LuaProto LoadBinary(ILuaState lua,
                                   ILoadInfo loadinfo, string name)
 {
     try
     {
         var reader = new BinaryBytesReader(loadinfo);
         var undump = new Undump(reader);
         undump.LoadHeader();
         return(undump.LoadFunction());
     }
     catch (UndumpException e)
     {
         var Lua = (LuaState)lua;
         Lua.O_PushString(string.Format(
                              "{0}: {1} precompiled chunk", name, e.Why));
         Lua.D_Throw(ThreadStatus.LUA_ERRSYNTAX);
         return(null);
     }
 }
コード例 #2
0
ファイル: LuaAPI.cs プロジェクト: zhongleiyang/UniLua
        ThreadStatus ILuaAPI.Load(ILoadInfo loadinfo, string name, string mode)
        {
            var param  = new LoadParameter(this, loadinfo, name, mode);
            var status = D_PCall(DG_F_Load, ref param, Top.Index, ErrFunc);

            if (status == ThreadStatus.LUA_OK)
            {
                var below = Stack[Top.Index - 1];
                Utl.Assert(below.V.TtIsFunction() && below.V.ClIsLuaClosure());
                var cl = below.V.ClLValue();
                if (cl.Upvals.Length == 1)
                {
                    var gt = G.Registry.V.HValue().GetInt(LuaDef.LUA_RIDX_GLOBALS);
                    cl.Upvals[0].V.V.SetObj(ref gt.V);
                }
            }

            return(status);
        }
コード例 #3
0
        private void CheckLoad()
        {
            if (IsLoading)
            {
                return;
            }

            if (m_LoadingInfos.Count == 0)
            {
                return;
            }
            IsLoading = true;
            ILoadInfo info = m_LoadingInfos.First.Value;

            if (info is LoadAssetBundleInfo)
            {
                LoadAssetBundleInfo loadAssetBundleInfo = (LoadAssetBundleInfo)info;
                m_Loader.LoadAssetBundleBytesAsync(loadAssetBundleInfo.AssetBundlePath, loadAssetBundleInfo.Mode);
            }
            else if (info is LoadAssetInfo)
            {
                LoadAssetInfo loadAssetInfo = (LoadAssetInfo)info;
                if (loadAssetInfo.IsAssetBundle)
                {
                    if (m_Holder.HasAssetBundle(loadAssetInfo.AssetPath))
                    {
                        m_Loader.LoadAssetFromAssetBundleAsync(m_Holder.GetAssetBundle(loadAssetInfo.AssetPath), loadAssetInfo.AssetName, loadAssetInfo.Mode);
                    }
                    else
                    {
                        //加载assetbundle失败
                        OnResourceLoaderLoadAssetComplete(new LoadAssetCompleteEventArgs(loadAssetInfo.AssetName, null, string.Format("asset bundle '{0}' not exists", loadAssetInfo.AssetPath), loadAssetInfo.UserData));
                    }
                }
                else
                {
                    m_Loader.LoadAssetAsync(loadAssetInfo.AssetPath, loadAssetInfo.Mode);
                }
            }
        }
コード例 #4
0
ファイル: Undump.cs プロジェクト: rokyado/UniLua
 public BinaryBytesReader( ILoadInfo loadinfo )
 {
     LoadInfo 	= loadinfo;
 }
コード例 #5
0
ファイル: Undump.cs プロジェクト: rokyado/UniLua
        public static LuaProto LoadBinary( ILuaState lua,
			ILoadInfo loadinfo, string name )
        {
            try
            {
                var reader = new BinaryBytesReader( loadinfo );
                var undump = new Undump( reader );
                undump.LoadHeader();
                return undump.LoadFunction();
            }
            catch( UndumpException e )
            {
                var Lua = (LuaState)lua;
                Lua.O_PushString( string.Format(
                    "{0}: {1} precompiled chunk", name, e.Why ) );
                Lua.D_Throw( ThreadStatus.LUA_ERRSYNTAX );
                return null;
            }
        }
コード例 #6
0
 public BinaryBytesReader(ILoadInfo loadinfo)
 {
     LoadInfo    = loadinfo;
     SizeOfSizeT = 0;
 }
コード例 #7
0
ファイル: Parser.cs プロジェクト: Jornason/UniLua
		public static LuaProto Parse(
			ILuaState lua, ILoadInfo loadinfo, string name )
		{
			var parser = new Parser();
			parser.Lua = (LuaState)lua;
			parser.Lexer = new LLex( lua, loadinfo, name );

			var topFuncState = new FuncState();
			parser.MainFunc( topFuncState );
			return topFuncState.Proto;
		}
コード例 #8
0
ファイル: LuaAPI.cs プロジェクト: rokyado/UniLua
        ThreadStatus ILuaAPI.Load( ILoadInfo loadinfo, string name, string mode )
        {
            var param  = new LoadParameter(this, loadinfo, name, mode);
            var status = D_PCall( DG_F_Load, ref param, Top.Index, ErrFunc );

            if( status == ThreadStatus.LUA_OK ) {
                var below = Stack[Top.Index-1];
                Utl.Assert(below.V.TtIsFunction() && below.V.ClIsLuaClosure());
                var cl = below.V.ClLValue();
                if(cl.Upvals.Length == 1) {
                    var gt = G.Registry.V.HValue().GetInt(LuaDef.LUA_RIDX_GLOBALS);
                    cl.Upvals[0].V.V.SetObj(ref gt.V);
                }
            }

            return status;
        }
コード例 #9
0
ファイル: LuaAPI.cs プロジェクト: rokyado/UniLua
 public LoadParameter(LuaState l, ILoadInfo loadinfo, string name, string mode)
 {
     L			= l;
     LoadInfo 	= loadinfo;
     Name		= name;
     Mode		= mode;
 }
コード例 #10
0
ファイル: Undump.cs プロジェクト: Jornason/UniLua
		public BinaryBytesReader( ILoadInfo loadinfo )
		{
			LoadInfo = loadinfo;
			SizeOfSizeT = 0;
		}
コード例 #11
0
ファイル: LLex.cs プロジェクト: Jornason/UniLua
        public LLex( ILuaState lua, ILoadInfo loadinfo, string name )
        {
			Lua			= (LuaState)lua;
            LoadInfo    = loadinfo;
            LineNumber  = 1;
			LastLine	= 1;
            Token       = null;
            LookAhead   = null;
            _Saved      = null;
			Source		= name;

            _Next();
        }
コード例 #12
0
 public BinaryBytesReader(ILoadInfo loadinfo)
 {
     LoadInfo = loadinfo;
 }
コード例 #13
0
ファイル: LuaAPI.cs プロジェクト: matthewyang/UniLua
        ThreadStatus ILuaAPI.Load( ILoadInfo loadinfo, string name, string mode )
        {
            var param  = new LoadParameter( loadinfo, name, mode );
            var status = D_PCall( F_Load, param, Top, ErrFunc );

            if( status == ThreadStatus.LUA_OK )
            {
                var cl = (Top-1).Value as LuaLClosure;
                if( cl.Upvals.Count == 1 )
                {
                    cl.Upvals[0].V.Value = G.Registry.GetInt(
                        LuaDef.LUA_RIDX_GLOBALS );
                }
            }

            return status;
        }
コード例 #14
0
ファイル: LuaAPI.cs プロジェクト: matthewyang/UniLua
 public LoadParameter( ILoadInfo loadinfo, string name, string mode )
 {
     LoadInfo 	= loadinfo;
     Name		= name;
     Mode		= mode;
 }