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 | |
parent | de46b91a524c5f2c8e72b379f2900afe34ccb815 (diff) |
*misc
-rw-r--r-- | Data/DefaultContent/Libraries/GameLab/Events/Event.lua | 8 | ||||
-rw-r--r-- | Data/DefaultContent/Libraries/GameLab/GlobalTable.lua | 15 | ||||
-rw-r--r-- | Data/DefaultContent/Libraries/GameLab/init.lua | 2 | ||||
-rw-r--r-- | Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua | 4 | ||||
-rw-r--r-- | Data/boot.lua | 1 | ||||
-rw-r--r-- | Editor/GUI/GUIWindow.cpp | 10 | ||||
-rw-r--r-- | Editor/Scripting/EditorScriptingManager.cpp | 6 | ||||
-rw-r--r-- | Editor/Scripting/EditorScriptingManager.h | 16 | ||||
-rw-r--r-- | Projects/VisualStudio/Editor/Editor.vcxproj | 8 | ||||
-rw-r--r-- | Projects/VisualStudio/Editor/Editor.vcxproj.filters | 12 | ||||
-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 |
18 files changed, 107 insertions, 67 deletions
diff --git a/Data/DefaultContent/Libraries/GameLab/Events/Event.lua b/Data/DefaultContent/Libraries/GameLab/Events/Event.lua index 214d61e..f2940bc 100644 --- a/Data/DefaultContent/Libraries/GameLab/Events/Event.lua +++ b/Data/DefaultContent/Libraries/GameLab/Events/Event.lua @@ -1,7 +1,9 @@ -local Event = {}
-GameLab.Events.Event = Event
+local Debug = GameLab.Debug
+local inspect = require("inspect")
-Event.current = {}
+local Event = GameLab.GlobalTable("GameLab.Events.Event")
+
+Event.current = nil
Event.SetCurrentEvent = function(evt)
Event.current = evt
diff --git a/Data/DefaultContent/Libraries/GameLab/GlobalTable.lua b/Data/DefaultContent/Libraries/GameLab/GlobalTable.lua new file mode 100644 index 0000000..10e3811 --- /dev/null +++ b/Data/DefaultContent/Libraries/GameLab/GlobalTable.lua @@ -0,0 +1,15 @@ +local GlobalTable = function(tbName)
+ local tb = {}
+
+ local shortName = string.match(tbName, "%.*(%w+)$")
+ local t = _G
+ for pkg in string.gmatch(tbName, "%.*(%w+)%.") do
+ t[pkg] = t[pkg] or {}
+ t = t[pkg]
+ end
+ t[shortName] = tb
+
+ return tb
+end
+
+return GlobalTable
\ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/init.lua b/Data/DefaultContent/Libraries/GameLab/init.lua index 8f61b05..df0e19a 100644 --- a/Data/DefaultContent/Libraries/GameLab/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/init.lua @@ -29,4 +29,6 @@ GameLab.GlobalClass = require("GameLab.GlobalClass") GameLab.Enum = require("GameLab.Enum")
GameLab.GlobalEnum = require("GameLab.GlobalEnum")
+GameLab.GlobalTable = require("GameLab.GlobalTable")
+
return GameLab
\ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua b/Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua index 6fc2628..8165faa 100644 --- a/Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua +++ b/Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua @@ -44,10 +44,8 @@ end GUIWindow.OnGUI = function(self)
self:ClearBackground()
-end
-GUIWindow.OnEvent = function(self, evt)
- Debug.Log("mousePos=" .. evt.mousePosition.x .. "," .. evt.mousePosition.y)
+
end
GUIWindow.GetContainerWindow = function(self)
diff --git a/Data/boot.lua b/Data/boot.lua index 7b9dda0..6f583bc 100644 --- a/Data/boot.lua +++ b/Data/boot.lua @@ -24,6 +24,7 @@ end -- load gamelab modules
require "GameLab"
+require "GameLab.Events"
require "GameLab.Engine"
require "GameLab.Engine.Math"
require "GameLab.Engine.Rendering"
diff --git a/Editor/GUI/GUIWindow.cpp b/Editor/GUI/GUIWindow.cpp index 94dfe33..a4049c8 100644 --- a/Editor/GUI/GUIWindow.cpp +++ b/Editor/GUI/GUIWindow.cpp @@ -5,7 +5,7 @@ #include "Editor/Win/Win.h" #include "Runtime/Math/Math.h" #include "Runtime/Events/InputEvent.h" -#include "Runtime/Scripting/ScriptingManager.h" +#include "Editor/Scripting/EditorScriptingManager.h" using namespace LuaBind; @@ -262,15 +262,15 @@ void GUIWindow::ProcessEventMessages(UINT message, WPARAM wParam, LPARAM lParam) { InputEvent ie(message, wParam, lParam, m_Handle); - SCRIPT_GLOBAL.setCurrentEvent.Invoke(0); - LuaBind::State state = GetVM()->GetCurThread(); + SCRIPT_GLOBAL.setCurrentEvent.AddTable(state, ie); + SCRIPT_GLOBAL.setCurrentEvent.Invoke(state, 0); + LuaBind::MemberInvoker invoker = LuaBind::MemberInvoker(state, this); invoker.member = m_Script; - invoker.method = "OnEvent"; + invoker.method = "OnGUI"; invoker.AddMember(m_Script); - invoker.AddTable(ie); invoker.Invoke(0); } diff --git a/Editor/Scripting/EditorScriptingManager.cpp b/Editor/Scripting/EditorScriptingManager.cpp new file mode 100644 index 0000000..57855d9 --- /dev/null +++ b/Editor/Scripting/EditorScriptingManager.cpp @@ -0,0 +1,6 @@ +#include "EditorScriptingManager.h"
+
+EditorScriptingManager::EditorScriptingManager()
+{
+ Scripting::FillRuntimeScriptGlobals(m_Globals);
+}
diff --git a/Editor/Scripting/EditorScriptingManager.h b/Editor/Scripting/EditorScriptingManager.h new file mode 100644 index 0000000..6d7a12b --- /dev/null +++ b/Editor/Scripting/EditorScriptingManager.h @@ -0,0 +1,16 @@ +#pragma once
+#include "Runtime/Utilities/Singleton.h"
+#include "Runtime/Scripting/RuntimeScripting.h"
+#include "Runtime/Utilities/UtilMacros.h"
+
+class EditorScriptingManager : public Singleton<EditorScriptingManager >
+{
+public:
+ EditorScriptingManager();
+
+ GET(RuntimeScriptGlobals&, Globals, m_Globals);
+
+private:
+ RuntimeScriptGlobals m_Globals;
+
+};
diff --git a/Projects/VisualStudio/Editor/Editor.vcxproj b/Projects/VisualStudio/Editor/Editor.vcxproj index 6994ee6..aaaf748 100644 --- a/Projects/VisualStudio/Editor/Editor.vcxproj +++ b/Projects/VisualStudio/Editor/Editor.vcxproj @@ -170,6 +170,7 @@ <ClCompile Include="..\..\..\Editor\Scripting\Editor\Editor.bind.cpp" />
<ClCompile Include="..\..\..\Editor\Scripting\Editor\EditorApplication.bind.cpp" />
<ClCompile Include="..\..\..\Editor\Scripting\IMGUI\GUIButton.bind.cpp" />
+ <ClCompile Include="..\..\..\Editor\Scripting\EditorScriptingManager.cpp" />
<ClCompile Include="..\..\..\Editor\Shaders\BuiltinShaders.cpp" />
<ClCompile Include="..\..\..\Editor\Utils\EditorUtils.cpp" />
<ClCompile Include="..\..\..\Editor\Utils\HelperFuncs.cpp" />
@@ -239,7 +240,7 @@ <ClCompile Include="..\..\..\Runtime\Scripting\Rendering\Shader.bind.cpp" />
<ClCompile Include="..\..\..\Runtime\Scripting\Rendering\Texture.bind.cpp" />
<ClCompile Include="..\..\..\Runtime\Scripting\Resource\Resource.bind.cpp" />
- <ClCompile Include="..\..\..\Runtime\Scripting\ScriptingManager.cpp" />
+ <ClCompile Include="..\..\..\Runtime\Scripting\RuntimeScriptGlobals.cpp" />
<ClCompile Include="..\..\..\Runtime\Threading\Job.cpp" />
<ClCompile Include="..\..\..\Runtime\Threading\JobSystem.cpp" />
<ClCompile Include="..\..\..\Runtime\Threading\Mutex.cpp" />
@@ -263,6 +264,7 @@ <ClInclude Include="..\..\..\Editor\GUI\WinUtils.h" />
<ClInclude Include="..\..\..\Editor\Resource\ResourceManager.h" />
<ClInclude Include="..\..\..\Editor\Scripting\EditorScripting.h" />
+ <ClInclude Include="..\..\..\Editor\Scripting\EditorScriptingManager.h" />
<ClInclude Include="..\..\..\Editor\Shaders\BuiltinShaders.h" />
<ClInclude Include="..\..\..\Editor\Utils\EditorUtils.h" />
<ClInclude Include="..\..\..\Editor\Utils\HelperFuncs.h" />
@@ -339,9 +341,9 @@ <ClInclude Include="..\..\..\Runtime\Profiling\Profiler.h" />
<ClInclude Include="..\..\..\Runtime\Rendering\DynamicMesh.h" />
<ClInclude Include="..\..\..\Runtime\Rendering\Quad.h" />
- <ClInclude Include="..\..\..\Runtime\Scripting\ScriptGlobals.h" />
+ <ClInclude Include="..\..\..\Runtime\Scripting\RuntimeScriptGlobals.h" />
+ <ClInclude Include="..\..\..\Runtime\Scripting\RuntimeScripting.h" />
<ClInclude Include="..\..\..\Runtime\Scripting\ScriptingChecks.h" />
- <ClInclude Include="..\..\..\Runtime\Scripting\RuntimeScriptingManager.h" />
<ClInclude Include="..\..\..\Runtime\Threading\Job.h" />
<ClInclude Include="..\..\..\Runtime\Threading\JobSystem.h" />
<ClInclude Include="..\..\..\Runtime\Threading\Mutex.h" />
diff --git a/Projects/VisualStudio/Editor/Editor.vcxproj.filters b/Projects/VisualStudio/Editor/Editor.vcxproj.filters index 7b7e549..fafbf97 100644 --- a/Projects/VisualStudio/Editor/Editor.vcxproj.filters +++ b/Projects/VisualStudio/Editor/Editor.vcxproj.filters @@ -418,9 +418,12 @@ <ClCompile Include="..\..\..\Runtime\Events\Event.cpp">
<Filter>Runtime\Events</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\Runtime\Scripting\ScriptingManager.cpp">
+ <ClCompile Include="..\..\..\Runtime\Scripting\RuntimeScriptGlobals.cpp">
<Filter>Runtime\Scripting</Filter>
</ClCompile>
+ <ClCompile Include="..\..\..\Editor\Scripting\EditorScriptingManager.cpp">
+ <Filter>Editor\Scripting</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Editor\GUI\Dock.h">
@@ -750,12 +753,15 @@ <ClInclude Include="..\..\..\Runtime\Events\Event.h">
<Filter>Runtime\Events</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\Runtime\Scripting\ScriptGlobals.h">
+ <ClInclude Include="..\..\..\Runtime\Scripting\RuntimeScriptGlobals.h">
<Filter>Runtime\Scripting</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\Runtime\Scripting\RuntimeScriptingManager.h">
+ <ClInclude Include="..\..\..\Runtime\Scripting\RuntimeScripting.h">
<Filter>Runtime\Scripting</Filter>
</ClInclude>
+ <ClInclude Include="..\..\..\Editor\Scripting\EditorScriptingManager.h">
+ <Filter>Editor\Scripting</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\Runtime\Lua\LuaBind\LuaBindClass.inc">
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; } \ |