diff options
author | chai <chaifix@163.com> | 2019-04-02 08:47:15 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-04-02 08:47:15 +0800 |
commit | 250e30d73f09e9da2b5a81d0fbae63744ae12a73 (patch) | |
tree | 0f55daf334c073e1779d7a1284799a2056aad714 /source/libs/asura-lib-utils/scripting/lua_env.h | |
parent | 66fe16dd5ed57ae958fc25158d0defae2e6fae6a (diff) |
*misc
Diffstat (limited to 'source/libs/asura-lib-utils/scripting/lua_env.h')
-rw-r--r-- | source/libs/asura-lib-utils/scripting/lua_env.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/source/libs/asura-lib-utils/scripting/lua_env.h b/source/libs/asura-lib-utils/scripting/lua_env.h new file mode 100644 index 0000000..e2fc4fc --- /dev/null +++ b/source/libs/asura-lib-utils/scripting/lua_env.h @@ -0,0 +1,72 @@ +#ifndef __ASURA_LUA_ENV_H__ +#define __ASURA_LUA_ENV_H__ + +extern "C" +{ +#include <Lua51/lua.h> +#include <Lua51/lauxlib.h> +} +#include <Luax/luax.h> + +#include "../singleton.hpp" + +namespace AsuraEngine +{ + namespace Scripting + { + + /// + /// ͨӿڷlua stateAsura˼ǣ߳άһluaӦ + /// Ҫڴlua߽߳ջ + /// + class LuaEnv ASURA_FINAL : public Singleton<LuaEnv> + { + public: + + LuaEnv() : mVM(0) {}; + ~LuaEnv() {}; + + /// + /// ִջ + /// + inline void Init() + { + ASSERT(!mVM); + mVM = new Luax::LuaxVM(); + ASSERT(mVM); + mVM->Setup(); + }; + + inline lua_State* GetMainThread() + { + return mVM->GetMainThread(); + }; + + inline void Exit() + { + delete mVM; + mVM = nullptr; + } + + private: + + /// + /// ̱߳һluaһAsuraԶֻһִ붼 + /// УֻһΡ߳\ִջӦglobal_Stateģ + /// + /// struct lua_State *mainthread; + /// + /// ʹlua_newstate()ᴴһһglobal_Stateṹһ + /// ߳lua_Stateءglobal_State̹߳˵һ + /// ߳lua_newstate()⣬߳lua_newthread() + /// + Luax::LuaxVM* mVM; + + }; + + } +} + +namespace AEScripting = AsuraEngine::Scripting; + +#endif
\ No newline at end of file |