summaryrefslogtreecommitdiff
path: root/Editor
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-10-25 23:29:21 +0800
committerchai <chaifix@163.com>2021-10-25 23:29:21 +0800
commit7ecf913256fb396e3027aac3318d996a716a52ef (patch)
tree4540835c881a63b665e2a692bf30115fd29e8bb0 /Editor
parent0816cd70ca1a213b6ed872bcf3c0bf0912473722 (diff)
+ job system
Diffstat (limited to 'Editor')
-rw-r--r--Editor/EditorApplication.cpp4
-rw-r--r--Editor/EditorApplication.h5
-rw-r--r--Editor/EditorMain.cpp7
-rw-r--r--Editor/GUI/EditorWindows.h2
-rw-r--r--Editor/Scripting/Editor/EditorApplication.bind.cpp14
-rw-r--r--Editor/Scripting/EditorScripting.cpp3
6 files changed, 30 insertions, 5 deletions
diff --git a/Editor/EditorApplication.cpp b/Editor/EditorApplication.cpp
index f9a6fa0..f480e37 100644
--- a/Editor/EditorApplication.cpp
+++ b/Editor/EditorApplication.cpp
@@ -1,6 +1,7 @@
#include "EditorApplication.h"
#include "Runtime/Utilities/Assert.h"
#include "Editor/EditorManager.h"
+#include "Runtime/Threading/JobSystem.h"
static bool s_Created;
@@ -8,6 +9,9 @@ EditorApplication::EditorApplication(LuaBind::VM* vm)
: LuaBind::NativeClass<EditorApplication>(vm)
{
Assert(!s_Created);
+
+ // 初始化jobsystem
+ JobSystem::Instance()->Initilize();
}
EditorApplication::~EditorApplication()
diff --git a/Editor/EditorApplication.h b/Editor/EditorApplication.h
index 1b464e8..8c74d07 100644
--- a/Editor/EditorApplication.h
+++ b/Editor/EditorApplication.h
@@ -3,6 +3,7 @@
#include "Runtime/Lua/LuaBind/LuaBind.h"
#include "Editor/GUI/EditorWindows.h"
#include "Editor/GUI/MenuManager.h"
+#include "Runtime/Threading/Thread.h"
using namespace LuaBind;
@@ -25,6 +26,6 @@ private :
LUA_BIND_DECL_METHOD(_New);
LUA_BIND_DECL_METHOD(_SetMainWindow);
LUA_BIND_DECL_METHOD(_PullMessage);
+ LUA_BIND_DECL_METHOD(_OnStep);
-
-};
+}; \ No newline at end of file
diff --git a/Editor/EditorMain.cpp b/Editor/EditorMain.cpp
index 555867a..5f16d63 100644
--- a/Editor/EditorMain.cpp
+++ b/Editor/EditorMain.cpp
@@ -7,6 +7,7 @@
#include "Runtime/Graphics/OpenGL.h"
#include "Editor/Scripting/EditorScripting.h"
#include "Editor/Win/Win.h"
+#include "Runtime/Threading/Thread.h"
using namespace LuaBind;
@@ -21,6 +22,7 @@ void InitLuaState(LuaBind::VM& vm)
vm.OpenLibs();
LuaBind::onRegisterNativeClass = LuaHelper::OnRegisterNativeClass;
+ LuaBind::onErrorOccured = ErrorHandle;
if (!SetupGameLabEditorScripting(vm.GetMainThread()))
{
@@ -33,7 +35,7 @@ void InitLuaState(LuaBind::VM& vm)
Win::SetDllSearchDirectory(workingDir);
LuaBind::State state = vm.GetMainState();
- state.DoFile("./boot.lua", ErrorHandle);
+ state.DoFile("./boot.lua");
}
#ifdef GAMELAB_DEBUG
@@ -42,6 +44,9 @@ int main()
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw)
#endif
{
+ WorkThread thread;
+ thread.Resume();
+
WindowUtil::RegisterClasses();
LuaBind::VM vm;
diff --git a/Editor/GUI/EditorWindows.h b/Editor/GUI/EditorWindows.h
index a7091dd..3e0471a 100644
--- a/Editor/GUI/EditorWindows.h
+++ b/Editor/GUI/EditorWindows.h
@@ -162,6 +162,8 @@ private:
HDC m_DC;
HGLRC m_RC;
+ std::vector<LuaBind::MemberRef> m_EditorWindows;
+
LuaBind::MemberRef m_Script; // EditorWindow脚本
LUA_BIND_DECL_CLASS(GUIWindow);
diff --git a/Editor/Scripting/Editor/EditorApplication.bind.cpp b/Editor/Scripting/Editor/EditorApplication.bind.cpp
index c6ea9f7..a2e28c7 100644
--- a/Editor/Scripting/Editor/EditorApplication.bind.cpp
+++ b/Editor/Scripting/Editor/EditorApplication.bind.cpp
@@ -1,11 +1,13 @@
#include "Editor/EditorApplication.h"
+#include "Runtime/Threading/JobSystem.h"
LUA_BIND_REGISTRY(EditorApplication)
{
LUA_BIND_REGISTER_METHODS(state,
{ "New", _New},
{ "SetMainWindow", _SetMainWindow },
- { "PullMessage", _PullMessage }
+ { "PullMessage", _PullMessage },
+ { "OnStep", _OnStep }
);
}
@@ -39,3 +41,13 @@ LUA_BIND_IMPL_METHOD(EditorApplication, _SetMainWindow)
MenuManager::Instance()->Init();
return 0;
}
+
+LUA_BIND_IMPL_METHOD(EditorApplication, _OnStep)
+{
+ LUA_BIND_PREPARE(L, EditorApplication);
+
+ // jobsystem回调
+ JobSystem::Instance()->Dispatch(L);
+
+ return 1;
+}
diff --git a/Editor/Scripting/EditorScripting.cpp b/Editor/Scripting/EditorScripting.cpp
index 38c55c8..9cd80cc 100644
--- a/Editor/Scripting/EditorScripting.cpp
+++ b/Editor/Scripting/EditorScripting.cpp
@@ -34,7 +34,8 @@ bool SetupGameLabEditorScripting(lua_State* L)
log_info("Scripting", "SetupGameLabEditorScripting()");
openlib(luaopen_GameLab_Debug);
- openlib(luaopen_GameLab_Path);
+ openlib(luaopen_GameLab_Path);
+ openlib(luaopen_GameLab_IO);
openlib(luaopen_GameLab_Engine_Rendering);
openlib(luaopen_GameLab_Engine_GL);