summaryrefslogtreecommitdiff
path: root/source/modules/asura-utils/scripting
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-03-29 22:51:04 +0800
committerchai <chaifix@163.com>2019-03-29 22:51:04 +0800
commitc302f5ae5f9e30a28e487e8a764d9cc31546bbea (patch)
tree7f18bedeece950600336ea7ced7c52c468552c98 /source/modules/asura-utils/scripting
parent157530b8b6e11efc5573d5a0db8987a440197aa1 (diff)
*rename
Diffstat (limited to 'source/modules/asura-utils/scripting')
-rw-r--r--source/modules/asura-utils/scripting/lua_env.h72
-rw-r--r--source/modules/asura-utils/scripting/portable.hpp29
2 files changed, 101 insertions, 0 deletions
diff --git a/source/modules/asura-utils/scripting/lua_env.h b/source/modules/asura-utils/scripting/lua_env.h
new file mode 100644
index 0000000..e2fc4fc
--- /dev/null
+++ b/source/modules/asura-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 state¡£Asura³ÌÐòµÄ˼ÏëÊÇ£¬½ø³ÌÖ÷Ïß³Ìά»¤Ò»¸ö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
diff --git a/source/modules/asura-utils/scripting/portable.hpp b/source/modules/asura-utils/scripting/portable.hpp
new file mode 100644
index 0000000..5badf8d
--- /dev/null
+++ b/source/modules/asura-utils/scripting/portable.hpp
@@ -0,0 +1,29 @@
+#ifndef __ASURA_ENGINE_PORTABLE_H__
+#define __ASURA_ENGINE_PORTABLE_H__
+
+#include "../type.h"
+
+#include "lua_env.h"
+
+namespace AsuraEngine
+{
+ namespace Scripting
+ {
+
+ ///
+ /// Ҫע²á¸øluaµÄnativeÀàÐèÒª¼Ì³Ð´ËÄ£°å¡£
+ ///
+ template<typename T>
+ using Portable = Luax::LuaxNativeClass<T>;
+
+ ///
+ /// ÐèÒª×÷Ϊ»ùÀ࣬·ÃÎÊuserdataºÍmember refµÄÀà¼Ì³Ð´ËÀ࣬עÒâ±ØÐëÊÇÐé¼Ì³Ð¡£
+ ///
+ using NativeAccessor = Luax::ILuaxNativeAccessor;
+
+ }
+}
+
+namespace AEScripting = AsuraEngine::Scripting;
+
+#endif \ No newline at end of file