Exemple #1
0
 void InitLuaEnv()
 {
     luaEnv       = new LuaEnv();
     HasGameStart = false;
     if (luaEnv != null)
     {
         luaEnv.AddLoader(CustomLoader);
         //注册pblua
         luaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadPb);
         //注册rapidjson
         luaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
     }
     else
     {
         Logger.LogError("InitLuaEnv null!!!");
     }
 }
Exemple #2
0
 private void Awake()
 {
     // load pb
     lua.AddBuildin("pb", XLua.LuaDLL.Lua.LoadPB);
     // 检查是否展开文件
     InitManager();
     Screen.fullScreen = true;
     Screen.SetResolution(Display.main.systemWidth, Display.main.systemHeight, true, 60);
 }
Exemple #3
0
        void LuaEnvInit()
        {
            //lua 文件查找目录

                        #if UNITY_EDITOR
            //先找 Resource 路径 -> StreamingAssets
            //Resource 路径
            _env.AddSearcher(ExtStaticLuaCallbacks.LoadLuaFileFromResource, -4);
                        #else
            //先找 PersistentDataPath 路径 -> StreamingAssets
            //沙盒路径
            _env.AddSearcher(ExtStaticLuaCallbacks.LoadLuaFileFromPersistentDataPath, -4);
                        #endif
            //模块注册
            _env.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
            _env.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
            _env.AddBuildin("protobuf.c", XLua.LuaDLL.Lua.LoadProtobufC);
        }
        protected override void Init()
        {
            HasGameStart = false;
            if (_luaEnv == null)
            {
                _luaEnv = new LuaEnv();
                _luaEnv.AddLoader(CustomLoader);
                _luaEnv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
                _luaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
                _luaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadProtobufC);
                _luaEnv.Global.Set("RootScene", gameObject);
            }

#if UNITY_EDITOR
            UnityEditor.EditorApplication.playModeStateChanged -= OnEditorPalyModeChanged;
            UnityEditor.EditorApplication.playModeStateChanged += OnEditorPalyModeChanged;
#endif
        }
Exemple #5
0
 public void Init()
 {
     if (m_LuaEnv == null)
     {
         m_LuaEnv = Lua.LuaEnv;
         m_LuaEnv.AddBuildin("hot", XLua.LuaDLL.Lua.LoadHotLib);
         m_LuaEnv.DoString(reload);
     }
 }
Exemple #6
0
        void Awake()
        {
            m_LuaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
            m_LuaEnv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
            m_LuaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);

            m_Require  = m_LuaEnv.Global.Get <Func <string, LuaTable> >("require");
            m_DoFile   = m_LuaEnv.Global.Get <Func <string, LuaTable> >("dofile");
            m_LoadFile = m_LuaEnv.Global.Get <Func <string, LuaFunction> >("loadfile");

            m_TraceBack = m_LuaEnv.Global.GetInPath <Func <string, int, string> >("debug.traceback");

            LuaTable package = m_LuaEnv.Global.Get <LuaTable>("package");

            m_LoadedTable = package.Get <LuaTable>("loaded");
            m_LoadedTable.ForEach <string, object>((key, value) => m_LoadedBuiltInSet.Add(key));
            m_PreloadTable = package.Get <LuaTable>("preload");
            m_PreloadTable.ForEach <string, object>((key, value) => m_PreloadBuiltInSet.Add(key));

            LuaTable xlua = m_LuaEnv.Global.Get <LuaTable>("xlua");

            m_LuaEnv.Global.Set <string, LuaTable>("xlua", xlua);
            m_HotFix = xlua.Get <Action <LuaTable, object, LuaFunction> >("hotfix");
            xlua.Set <string, Action <LuaTable, object, LuaFunction> >("hotfix", HotFix);

            LuaTable util = Require("xlua.util");

            m_LuaEnv.Global.Set <string, LuaTable>("util", util);
            m_HotFixEx = util.Get <Action <LuaTable, object, LuaFunction> >("hotfix_ex");
            util.Set <string, Action <LuaTable, object, LuaFunction> >("hotfix_ex", HotFixEx);

            LuaTable csHelp = Require("LuaUtil.CSHelp");

            m_LuaEnv.Global.Set <string, LuaTable>("CSHelp", csHelp);
            m_FuncInvoke = csHelp.Get <Func <object, object[], object> >("FuncInvoke");

            m_LuaEnv.Global.ForEach <string, object>((key, value) => m_GlobalVarBuiltInSet.Add(key));

            m_LuaEnv.AddLoader(CustomLoad);

            Debugger.LogMessageFormat = message => m_TraceBack(message.ToString(), 1);
        }
    protected override void Awake()
    {
        LuaEnv.AddLoader(LuaSteamingAssetsLoader.Loader);
//        LuaEnv.AddLoader(ResourceLuaLoader.Loader);
//        LuaEnv.AddLoader(LuaDirectoryLoader.Loader);

        LuaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProtobuf);
        LuaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);

        base.Awake();
    }
Exemple #8
0
        private void Awake()
        {
            Instance = this;
            LuaEnv   = new LuaEnv();

            //第三方库
            LuaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
//            LuaEnv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
//            LuaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);
//            LuaEnv.AddBuildin("ffi", XLua.LuaDLL.Lua.LoadFFI);
        }
Exemple #9
0
 private void Awake()
 {
     Debug.Log("LuaClient Awake !!!");
     luaEnv = new LuaEnv();
     luaEnv.AddBuildin("rapidjson", LuaAPI.LoadRapidJson);
     // luaEnv.AddBuildin("")
     // LuaAPI.ikcp_check(10, 123);
     instance = this;
     DontDestroyOnLoad(gameObject);
     // luaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
 }
Exemple #10
0
    void initLua()
    {
        currentLuaEnv = new LuaEnv();

        currentLuaEnv.Global.Set <string, bool>("_ANDROID", true);

        currentLuaEnv.AddLoader((ref string fn) =>
        {
            return(LuaFilePicker.Load(fn));
        });
        currentLuaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);
        currentLuaEnv.DoString("require '" + Defines.LuaEntryFileName + "'");
    }
Exemple #11
0
        public void Startup()
        {
            Clear();

            m_luaEnv = new LuaEnv();

            foreach (var pairs in DEFAULT_INITER)
            {
                m_luaEnv.AddBuildin(pairs.Key, pairs.Value);
            }

            m_luaEnv.AddLoader(OnLoaderInvoke);
        }
Exemple #12
0
        public IEnumerator Init()
        {
#if SLUA
            InitSLua();
#else
            var L = _luaEnv.L;
            //在lua G中增加import函数
            LuaDLL.lua_pushstdcallcfunction(L, LuaImport);
            LuaDLL.xlua_setglobal(L, "import");

            //TODO lua中需要require的第三方库加到这里,如果不需要则删除已添加的这几行
            _luaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
            _luaEnv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
            _luaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);
            _luaEnv.AddBuildin("ffi", XLua.LuaDLL.Lua.LoadFFI);
            yield return(null);
#endif

            CallScript("Init");

            IsInited = true;
        }
    private void Init()
    {
        luaEnv = new LuaEnv();
        luaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);
        luaEnv.DoString("require 'main_in'");
        XLuaMgr_Init init = luaEnv.Global.Get <XLuaMgr_Init>("Init");

        if (init != null)
        {
            init(gameManager);
        }
        outGame = luaEnv.Global.Get <Action>("OutGame");
    }
Exemple #14
0
        public IEnumerator Init()
        {
#if SLUA
            int frameCount = 0;
            while (!_luaSvr.inited)
            {
                if (frameCount % 30 == 0)
                {
                    Log.LogWarning("SLua Initing...");
                }
                yield return(null);

                frameCount++;
            }
            var L = _luaSvr.luaState.L;
            LuaDLL.lua_pushcfunction(L, LuaImport);
            LuaDLL.lua_setglobal(L, "import");
            LuaDLL.lua_pushcfunction(L, LuaUsing);
            LuaDLL.lua_setglobal(L, "using");       // same as SLua's import, using namespace
            LuaDLL.lua_pushcfunction(L, ImportCSharpType);
            LuaDLL.lua_setglobal(L, "import_type"); // same as SLua's SLua.GetClass(), import C# type
#else
            var L = _luaEnv.L;
            LuaDLL.lua_pushstdcallcfunction(L, LuaImport);
            LuaDLL.xlua_setglobal(L, "import");

            //TODO lua中需要require的第三方库加到这里
            _luaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
            _luaEnv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
            _luaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);
            _luaEnv.AddBuildin("ffi", XLua.LuaDLL.Lua.LoadFFI);
            yield return(null);
#endif

            CallScript("Init");

            IsInited = true;
        }
Exemple #15
0
    void Awake()
    {
        Application.targetFrameRate = 45;
        luaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
        luaEnv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
        luaEnv.AddBuildin("protobuf.c", XLua.LuaDLL.Lua.LoadProtobufC);

        scriptEnv = luaEnv.NewTable();

        LuaTable meta = luaEnv.NewTable();

        meta.Set("__index", luaEnv.Global);
        scriptEnv.SetMetaTable(meta);
        meta.Dispose();

        scriptEnv.Set("self", this);
        foreach (var injection in injections)
        {
            scriptEnv.Set(injection.name, injection.value);
        }
        luaEnv.AddLoader(CustomLoaderMethod);
        luaEnv.DoString(luaScript.text, "LuaBehaviour", scriptEnv);
        Action luaAwake = scriptEnv.Get <Action>("Main_Awake");

#if UNITY_EDITOR
        scriptEnv.Get("Main_StartEditor", out luaStart);
#else
        scriptEnv.Get("Main_Start", out luaStart);
#endif

        scriptEnv.Get("Main_Update", out luaUpdate);
        scriptEnv.Get("Main_Ondestroy", out luaOnDestroy);
        if (luaAwake != null)
        {
            luaAwake();
        }
        DontDestroyOnLoad(this);
    }
Exemple #16
0
//		private LuaState lua;
//		private LuaLoader loader;
//		private LuaLooper loop = null;
//
        // Use this for initialization
        void Awake()
        {
            scriptEnv = luaEnv.NewTable();
            LuaTable meta = luaEnv.NewTable();

            meta.Set("__index", luaEnv.Global);
            scriptEnv.SetMetaTable(meta);
            meta.Dispose();

            scriptEnv.Set("self", this);

            LuaFileUtils.Instance.AddSearchPath(Util.LuaDataPath + AppConst.LuaTempDir + "?");

            luaEnv.AddLoader((ref string filepath) => {
                var name = filepath.Replace(".", "/");
                UnityEngine.Debug.Log("require file: " + name);
                return(LuaFileUtils.Instance.ReadFile(name));
            });

            luaEnv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
            luaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);
            luaEnv.AddBuildin("ffi", XLua.LuaDLL.Lua.LoadFFI);
        }
        void Awake()
        {
            luaEnv = new LuaEnv();

            luaEnv.AddBuildin("cjson", XLua.LuaDLL.Lua.LoadCJson);
            luaEnv.AddBuildin("sproto", XLua.LuaDLL.Lua.LoadSproto);
            luaEnv.AddBuildin("crypt", XLua.LuaDLL.Lua.LoadCrypt);
            luaEnv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
            luaEnv.AddBuildin("clonefunc", XLua.LuaDLL.Lua.LoadCloneFunc);

            luaEnv.DoString(@"local hardreload = require 'hardreload'
require = hardreload.require");

            luaEnv.DoString(@"require 'ButtonInteraction'");

            scriptEnv = luaEnv.Global.Get <LuaTable>("ui");;

            scriptEnv.Get("start", out luaStart);
            foreach (var injection in injections)
            {
                scriptEnv.Set(injection.name, injection.value);
            }
        }
Exemple #18
0
 void InitLuaEnv()
 {
     luaEnv       = new LuaEnv();
     HasGameStart = false;
     if (luaEnv != null)
     {
         luaEnv.AddLoader(CustomLoader);
         luaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadPb);
     }
     else
     {
         Logger.LogError("InitLuaEnv null!!!");
     }
 }
 private void InitLuaEnv()
 {
     luaEnv = new LuaEnv();
     if (luaEnv != null)
     {
         luaEnv.AddLoader(CustomLoader);
         luaEnv.AddBuildin("rapidjson", XLua.LuaDLL.LuaBuildIn.LoadRapidJson);
         this.meta = luaEnv.NewTable();
         meta.Set("__index", luaEnv.Global);
     }
     //luaFilePathDict.Add("LobbyPanel", "UI/LobbyPanel");
     //luaFilePathDict.Add("GamePanel", "UI/GamePanel");
     //luaFilePathDict.Add("GameOverPanel", "UI/GameOverPanel");
 }
Exemple #20
0
    // Use this for initialization
    void Start()
    {
        GG_User user = new GG_User();

        user.info         = new GG_UserInfo();
        user.info.level   = 1;
        user.info.diamond = 999998111111;
        user.info.name    = "ss";

        var encode = Serialize(user);

        GG_User decode = Deserialize <GG_User>(encode);

        Debug.Log(decode.info.diamond);


        LuaEnv luaenv = new LuaEnv();

        luaenv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
        luaenv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
        luaenv.AddBuildin("protobuf.c", XLua.LuaDLL.Lua.LoadProtobufC);
        luaenv.DoString(luaFile.bytes);
    }
Exemple #21
0
        public void DoStart()
        {
            if (IsValid)
            {
                Debug.LogError("The bridge has been startup");
                return;
            }
            Env = new LuaEnv();
            Env.AddLoader(LuaScriptLoader.LoadScriptFromProject);
#if DEBUG
            Global.Set("isDebug", true);
#endif
            Env.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
            Global.Set("isRapidJson", true);
            Env.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);

            gameTable          = LuaUtility.RequireAndGet(Env, initScriptPath);
            updateHandler      = gameTable.Get <Action <float, float> >(LuaUtility.UPDATE_FUNCTION_NAME);
            lateUpdateHandler  = gameTable.Get <Action <float, float> >(LuaUtility.UPDATE_FUNCTION_NAME);
            fixedUpdateHandler = gameTable.Get <Action <float, float> >(LuaUtility.FIXEDUPDATE_FUNCTION_NAME);

            Action startAction = gameTable.Get <Action>(LuaUtility.START_FUNCTION_NAME);
            startAction?.Invoke();
        }
    // Use this for initialization
    void Start()
    {
        LuaEnv luaenv = new LuaEnv();

        luaenv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadPb);
        luaenv.DoString(@"
        local common_pb = require 'Protol.common_pb'
        local person_pb = require 'Protol.person_pb'
        local pb_data = nil;
       
        function Decoder()  
            local msg = person_pb.Person()
            msg:ParseFromString(pb_data)
            --tostring 不会打印默认值
            print('person_pb decoder: '..tostring(msg)..'age: '..msg.age..'\nemail: '..msg.email)
            assert(tonumber(msg.header.cmd) == 10010, 'msg.header.cmd')
            assert(msg.header.seq == 1, 'msg.header.cmd')
            assert(tonumber(msg.id) == 1223372036854775807, 'msg.id')
	        assert(msg.name == 'foo', 'msg.name')
	        assert(msg.array[1] == 1, 'msg.array[1]')
	        assert(msg.array[2] == 2, 'msg.array[2]')
	        assert(msg.age == 18, 'msg.age')
	        assert(msg.email == '*****@*****.**',  'msg.email')
            assert(msg.Extensions[person_pb.Phone.phones][1].num == '13788888888', 'msg.Extensions.num')
            assert(msg.Extensions[person_pb.Phone.phones][1].type == person_pb.Phone.MOBILE, 'msg.Extensions.type')
        end

        function Encoder()                     
            local msg = person_pb.Person()                                 
            msg.header.cmd = 10010                                
            msg.header.seq = 1
            msg.id = '1223372036854775807'
            msg.name = 'foo'              
            --数组添加                              
            msg.array:append(1)                              
            msg.array:append(2)            
            --extensions 添加
            local phone = msg.Extensions[person_pb.Phone.phones]:add()
            phone.num = '13788888888'      
            phone.type = person_pb.Phone.MOBILE      
            pb_data = msg:SerializeToString()
        end

        Encoder()
        Decoder()
");
        luaenv.Dispose();
    }
Exemple #23
0
    void Awake()
    {
        Instance = this;

        //luaEnv.AddLoader(MyLoader);

        //luaEnv.DoString("require 'Lua/LuaA'"); //必须跟路径
        //luaEnv.DoString("require 'Lua.LuaA'"); //或用.的方式

        //第三方库
        //luaEnv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
        //luaEnv.DoString("require 'rapidjson'");
        luaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadPb);
        //luaEnv.DoString("require 'protobuf_test'");

        //NetworkManager.Connect();
    }
Exemple #24
0
 void InitLuaEnv()
 {
     luaEnv       = new LuaEnv();
     HasGameStart = false;
     if (luaEnv != null)
     {
         // #if ENABLE_LOG
         //     _luaenv.Global.Set("ENABLE_LOG", true);
         // #endif
         luaEnv.AddLoader(CustomLoader);
         luaEnv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadPb);
     }
     else
     {
         Logger.LogError("InitLuaEnv null!!!");
     }
 }
Exemple #25
0
    public static void Initialize()
    {
        if (isInit)
        {
            return;
        }
        g_LuaEnv.AddBuildin("rapidjson", LoadRapidJson);
        g_LuaEnv.AddLoader((ref string filename) => {
            if (loadedInfo.ContainsKey(filename))
            {
                AssetBundle asset       = loadedInfo[filename];
                UnityEngine.Object objs = asset.LoadAllAssets()[0];
                return(Encoding.UTF8.GetBytes(objs.ToString()));
            }
            return(null);
        });

        isInit = true;
    }
Exemple #26
0
    public override bool Init()
    {
        luaEnv.AddLoader(Require);

        // luaEnv.AddBuildin("mime.core", XLua.LuaDLL.Lua.LoadSocketMime);
        luaEnv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
        luaEnv.AddBuildin("ffi", XLua.LuaDLL.Lua.LoadFfi);
        luaEnv.AddBuildin("lxp", XLua.LuaDLL.Lua.LoadLxp);
        luaEnv.AddBuildin("lfb", XLua.LuaDLL.Lua.LoadLfb);

        luaEnv.AddBuildin("p7zip", XLua.LuaDLL.Lua.LoadP7zip);

        luaEnv.AddBuildin("lsqlite3", XLua.LuaDLL.Lua.LoadLSQLite3);
        luaEnv.AddBuildin("luasql.mysql", XLua.LuaDLL.Lua.LoadLuaSqlMysql);

        // lua.AddBuildin("nslua", XLua.LuaDLL.Lua.LoadNSLua);

        return(base.Init());
    }
Exemple #27
0
        public void Init()
        {
            m_lua_env = new LuaEnv();
            //m_lua_env.AddBuildin( "pb", XLua.LuaDLL.Lua.LoadPb );
            //m_lua_env.AddBuildin( "rapidjson", XLua.LuaDLL.Lua.LoadRapidJson );
            m_lua_env.AddBuildin("protobuf.c", XLua.LuaDLL.Lua.LoadProtobufC);
            m_lua_env.AddLoader((ref string path) =>
            {
#if UNITY_EDITOR
                if (ResManager.Instance.ResLoadMode == eResLoadMode.Editor || path == "LuaDebug") //调试文件不打入包
                {
                    return(System.IO.File.ReadAllBytes(string.Format("Assets/LuaScript/{0}.lua.txt", path)));
                }
#endif
                TextAsset asset = null;
                ResManager.Instance.LoadAsset(string.Format("Assets/LuaScript/{0}.lua.txt", path), (_res_data, _obj) =>
                {
                    asset = _obj as TextAsset;
                }, false);
                return(asset.bytes);
            });
            m_lua_env.DoString("require 'Init'");
        }
    // Use this for initialization
    void Start()
    {
        LuaEnv luaenv = new LuaEnv();

        luaenv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
        luaenv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
        luaenv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);
        luaenv.AddBuildin("ffi", XLua.LuaDLL.Lua.LoadFFI);
        luaenv.DoString(@"
        ------------------------------------
        local rapidjson = require 'rapidjson' 
        local t = rapidjson.decode('{""a"":123}')
        print(t.a)
        t.a = 456
        local s = rapidjson.encode(t)
        print('json', s)
        ------------------------------------
        local lpeg = require 'lpeg'
        print(lpeg.match(lpeg.R '09','123'))
        ------------------------------------        
        local pb = require 'pb'
        local protoc = require 'protoc'

        assert(protoc:load [[
        message Phone {
            optional string name        = 1;
            optional int64  phonenumber = 2;
        }
        message Person {
            optional string name     = 1;
            optional int32  age      = 2;
            optional string address  = 3;
            repeated Phone  contacts = 4;
        } ]])

        local data = {
        name = 'ilse',
        age  = 18,
            contacts = {
                { name = 'alice', phonenumber = 12312341234 },
                { name = 'bob',   phonenumber = 45645674567 }
            }
        }

        local bytes = assert(pb.encode('Person', data))
        print(pb.tohex(bytes))

        local data2 = assert(pb.decode('Person', bytes))
        print(data2.name)
        print(data2.age)
        print(data2.address)
        print(data2.contacts[1].name)
        print(data2.contacts[1].phonenumber)
        print(data2.contacts[2].name)
        print(data2.contacts[2].phonenumber)
        ---------------------------------
        local ffi = require('ffi')
        ffi.cdef [[
            typedef struct {int fake_id;unsigned int len;} CSSHeader;
        ]]
        ffi.cdef [[
            typedef struct {
                CSSHeader header;
                float x;
                float y;
                float z;
            } Vector3;
        ]]

        local Vector3Native = ffi.typeof('Vector3 *')
        local v = CS.UnityEngine.Vector3(1, 2, 3)
        local vn = ffi.cast(Vector3Native, v)
        print(vn)
        if vn.header.fake_id == -1 then
            print('vector { ', vn.x, vn.y, vn.z, '}')
        else
            print('please gen code')
        end
       "
                        );
        luaenv.Dispose();
    }
Exemple #29
0
 void AddBuildin()
 {
     luaenv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
     luaenv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
     luaenv.AddBuildin("protobuf.c", XLua.LuaDLL.Lua.LoadProtobufC);
 }
Exemple #30
0
    // Use this for initialization
    void Start()
    {
        HookSetup.HookLuaFuns();

        LuaEnv luaenv = new LuaEnv();

        LuaProfiler.SetMainLuaEnv(luaenv);

        luaenv.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);
        luaenv.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg);
        luaenv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);
        luaenv.DoString(@"
        ------------------------------------
        local rapidjson = require 'rapidjson' 
        local t = rapidjson.decode('{""a"":123}')
        print(t.a)
        t.a = 456
        local s = rapidjson.encode(t)
        print('json', s)
        ------------------------------------
        local lpeg = require 'lpeg'
        print(lpeg.match(lpeg.R '09','123'))
        ------------------------------------
        local pb = require 'pb'
        local protoc = require 'protoc'

        assert(protoc:load [[
        message Phone {
            optional string name        = 1;
            optional int64  phonenumber = 2;
        }
        message Person {
            optional string name     = 1;
            optional int32  age      = 2;
            optional string address  = 3;
            repeated Phone  contacts = 4;
        } ]])

        local data = {
        name = 'ilse',
        age  = 18,
            contacts = {
                { name = 'alice', phonenumber = 12312341234 },
                { name = 'bob',   phonenumber = 45645674567 }
            }
        }

        local bytes = assert(pb.encode('Person', data))
        print(pb.tohex(bytes))

        local data2 = assert(pb.decode('Person', bytes))
        print(data2.name)
        print(data2.age)
        print(data2.address)
        print(data2.contacts[1].name)
        print(data2.contacts[1].phonenumber)
        print(data2.contacts[2].name)
        print(data2.contacts[2].phonenumber)
        "
                        );
        //luaenv.Dispose();
    }