diff options
author | chai <chaifix@163.com> | 2021-11-11 15:05:40 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-11-11 15:05:40 +0800 |
commit | 36f42b74630d4bca2d1d276d57c4c967d0290380 (patch) | |
tree | c71029f98db3d22e6a32ba4de7350aff9ae6f17d /Runtime | |
parent | de46b91a524c5f2c8e72b379f2900afe34ccb815 (diff) |
*misc
Diffstat (limited to 'Runtime')
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindLFunction.cpp | 10 | ||||
-rw-r--r-- | Runtime/Scripting/RuntimeScriptGlobals.cpp | 10 | ||||
-rw-r--r-- | Runtime/Scripting/RuntimeScriptGlobals.h | 21 | ||||
-rw-r--r-- | Runtime/Scripting/RuntimeScripting.h | 3 | ||||
-rw-r--r-- | Runtime/Scripting/RuntimeScriptingManager.h | 22 | ||||
-rw-r--r-- | Runtime/Scripting/ScriptGlobals.h | 10 | ||||
-rw-r--r-- | Runtime/Scripting/ScriptingManager.cpp | 14 | ||||
-rw-r--r-- | Runtime/Utilities/UtilMacros.h | 2 |
8 files changed, 42 insertions, 50 deletions
diff --git a/Runtime/Lua/LuaBind/LuaBindLFunction.cpp b/Runtime/Lua/LuaBind/LuaBindLFunction.cpp index b468897..1e7b75f 100644 --- a/Runtime/Lua/LuaBind/LuaBindLFunction.cpp +++ b/Runtime/Lua/LuaBind/LuaBindLFunction.cpp @@ -6,6 +6,7 @@ namespace LuaBind LuaFunction::LuaFunction(const char* func) { + argc = 0; method = func; } @@ -54,10 +55,13 @@ namespace LuaBind { if (state.GetGlobalField(method)) { - int funcIdx = -1 - argc; - lua_replace(state, funcIdx); - state.Call(argc, nReturns); + if (state.IsType(-1, LUA_TFUNCTION)) { + int funcIdx = -1 - argc; + lua_insert(state, funcIdx); + state.Call(argc, nReturns); + } } + argc = 0; } }
\ No newline at end of file diff --git a/Runtime/Scripting/RuntimeScriptGlobals.cpp b/Runtime/Scripting/RuntimeScriptGlobals.cpp new file mode 100644 index 0000000..5f140a1 --- /dev/null +++ b/Runtime/Scripting/RuntimeScriptGlobals.cpp @@ -0,0 +1,10 @@ +#include "RuntimeScriptGlobals.h"
+ +namespace Scripting +{ +
+ void FillRuntimeScriptGlobals(RuntimeScriptGlobals& globals)
+ {
+ globals.setCurrentEvent = "GameLab.Events.Event.SetCurrentEvent";
+ }
+}
\ No newline at end of file diff --git a/Runtime/Scripting/RuntimeScriptGlobals.h b/Runtime/Scripting/RuntimeScriptGlobals.h new file mode 100644 index 0000000..76448a9 --- /dev/null +++ b/Runtime/Scripting/RuntimeScriptGlobals.h @@ -0,0 +1,21 @@ +#pragma once +#include "Runtime/Lua/LuaHelper.h" + +#define DECL_LUA_FUNC(name) LuaBind::LuaFunction name +
+#ifdef GAMELAB_EDITOR
+#define SCRIPT_GLOBAL EditorScriptingManager::Instance()->GetGlobals()
+#elif defined(GAMELAB_RUNNER)
+#define SCRIPT_GLOBAL
+#endif
+ +// 全局方法和变量 +struct RuntimeScriptGlobals +{ + DECL_LUA_FUNC(setCurrentEvent); +}; + +namespace Scripting +{ + void FillRuntimeScriptGlobals(RuntimeScriptGlobals& globals); +}
\ No newline at end of file diff --git a/Runtime/Scripting/RuntimeScripting.h b/Runtime/Scripting/RuntimeScripting.h new file mode 100644 index 0000000..4134dcc --- /dev/null +++ b/Runtime/Scripting/RuntimeScripting.h @@ -0,0 +1,3 @@ +#pragma once
+
+#include "RuntimeScriptGlobals.h"
diff --git a/Runtime/Scripting/RuntimeScriptingManager.h b/Runtime/Scripting/RuntimeScriptingManager.h deleted file mode 100644 index b8db959..0000000 --- a/Runtime/Scripting/RuntimeScriptingManager.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once -#include "Runtime/Utilities/Singleton.h" -#include "ScriptGlobals.h" -#include "Runtime/Utilities/UtilMacros.h" - -class RuntimeScriptingManager : public Singleton<RuntimeScriptingManager > -{ -public: - RuntimeScriptingManager(); - - GET(const ScriptGlobals&, Globals, m_Globals); - -private: - void FillGloabls(); - - ScriptGlobals m_Globals; // lua侧的全局方法 - -}; - -#define SCRIPT_GLOBAL RuntimeScriptingManager::Instance()->GetGlobals() - - diff --git a/Runtime/Scripting/ScriptGlobals.h b/Runtime/Scripting/ScriptGlobals.h deleted file mode 100644 index af396bd..0000000 --- a/Runtime/Scripting/ScriptGlobals.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once -#include "Runtime/Lua/LuaHelper.h" - -#define DECL_LUA_FUNC(name) LuaBind::LuaFunction name - -// 全局方法和变量 -struct ScriptGlobals -{ - DECL_LUA_FUNC(setCurrentEvent); -};
\ No newline at end of file diff --git a/Runtime/Scripting/ScriptingManager.cpp b/Runtime/Scripting/ScriptingManager.cpp deleted file mode 100644 index 5b26262..0000000 --- a/Runtime/Scripting/ScriptingManager.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "RuntimeScriptingManager.h" - -RuntimeScriptingManager::RuntimeScriptingManager() -{ - - - -} - -void RuntimeScriptingManager::FillGloabls() -{ - m_Globals.setCurrentEvent = "GameLab.Events.Event.SetCurrentEvent"; - -}
\ No newline at end of file diff --git a/Runtime/Utilities/UtilMacros.h b/Runtime/Utilities/UtilMacros.h index f48be5c..29bb7b0 100644 --- a/Runtime/Utilities/UtilMacros.h +++ b/Runtime/Utilities/UtilMacros.h @@ -6,7 +6,7 @@ inline TYPE Get##PROP () {return VAR; } #define GET(TYPE, PROP, VAR) \ - inline TYPE Get##PROP () const {return VAR; } + inline TYPE Get##PROP () {return VAR; } #define SET(TYPE, PROP, VAR) \ inline void Set##PROP (TYPE val) { VAR = val; } \ |