summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-11-11 15:05:40 +0800
committerchai <chaifix@163.com>2021-11-11 15:05:40 +0800
commit36f42b74630d4bca2d1d276d57c4c967d0290380 (patch)
treec71029f98db3d22e6a32ba4de7350aff9ae6f17d
parentde46b91a524c5f2c8e72b379f2900afe34ccb815 (diff)
*misc
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Events/Event.lua8
-rw-r--r--Data/DefaultContent/Libraries/GameLab/GlobalTable.lua15
-rw-r--r--Data/DefaultContent/Libraries/GameLab/init.lua2
-rw-r--r--Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua4
-rw-r--r--Data/boot.lua1
-rw-r--r--Editor/GUI/GUIWindow.cpp10
-rw-r--r--Editor/Scripting/EditorScriptingManager.cpp6
-rw-r--r--Editor/Scripting/EditorScriptingManager.h16
-rw-r--r--Projects/VisualStudio/Editor/Editor.vcxproj8
-rw-r--r--Projects/VisualStudio/Editor/Editor.vcxproj.filters12
-rw-r--r--Runtime/Lua/LuaBind/LuaBindLFunction.cpp10
-rw-r--r--Runtime/Scripting/RuntimeScriptGlobals.cpp10
-rw-r--r--Runtime/Scripting/RuntimeScriptGlobals.h21
-rw-r--r--Runtime/Scripting/RuntimeScripting.h3
-rw-r--r--Runtime/Scripting/RuntimeScriptingManager.h22
-rw-r--r--Runtime/Scripting/ScriptGlobals.h10
-rw-r--r--Runtime/Scripting/ScriptingManager.cpp14
-rw-r--r--Runtime/Utilities/UtilMacros.h2
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; } \