summaryrefslogtreecommitdiff
path: root/Editor
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-11-17 00:46:58 +0800
committerchai <chaifix@163.com>2021-11-17 00:46:58 +0800
commit9421ca53788e51a92b28056e06af3d9dd6b4d92c (patch)
tree045519df1b7eacbadd8af5df79c1367869514dc8 /Editor
parent1f5b75d39721ad40483f1b188af2e965fbe205ac (diff)
*rename
Diffstat (limited to 'Editor')
-rw-r--r--Editor/GUI/GUIWindow.cpp27
-rw-r--r--Editor/GUI/GUIWindow.h20
-rw-r--r--Editor/Scripting/Window/GUIWindow.bind.cpp12
3 files changed, 56 insertions, 3 deletions
diff --git a/Editor/GUI/GUIWindow.cpp b/Editor/GUI/GUIWindow.cpp
index 19ceb85..028a654 100644
--- a/Editor/GUI/GUIWindow.cpp
+++ b/Editor/GUI/GUIWindow.cpp
@@ -8,6 +8,32 @@
#include "Editor/Scripting/EditorScriptingManager.h"
using namespace LuaBind;
+using namespace std;
+
+GUIWindowProxy::GUIWindowProxy(GUIWindow *owner, LuaBind::MemberRef script)
+{
+
+}
+
+void GUIWindowProxy::OnGUI(LuaBind::State& state)
+{
+ MemberInvoker invoker = MemberInvoker(state, owner);
+ invoker.member = script;
+ invoker.method = "OnGUI";
+ invoker.AddMember(script);
+ invoker.Invoke(0);
+}
+
+void GUIWindowProxy::DoGUI()
+{
+ LuaBind::State state = owner->GetVM()->GetCurThread();
+
+
+
+ OnGUI(state);
+}
+
+//------------------------------------------------------------------------------------
static bool RedirectMouseWheel(HWND window, WPARAM wParam, LPARAM lParam)
{
@@ -210,7 +236,6 @@ void GUIWindow::RepaintAll()
GUIWindow::GUIWindow(LuaBind::VM* vm, std::string name)
: LuaBind::NativeClass<GUIWindow>(vm)
- , m_Script()
{
log_info("Init GUIWindow");
diff --git a/Editor/GUI/GUIWindow.h b/Editor/GUI/GUIWindow.h
index aed38d9..bbf2687 100644
--- a/Editor/GUI/GUIWindow.h
+++ b/Editor/GUI/GUIWindow.h
@@ -14,6 +14,25 @@
#include "Runtime/Utilities/Exception.h"
#include "WindowUtil.h"
+class GUIWindow;
+
+class GUIWindowProxy : public LuaObjectProxy
+{
+public:
+ GUIWindow * owner;
+ LuaBind::MemberRef script;
+
+ GUIWindowProxy() {}
+ GUIWindowProxy(GUIWindow *owner, LuaBind::MemberRef script);
+
+ void DoGUI();
+ void DoClean();
+
+private:
+ void OnGUI(LuaBind::State& state);
+
+};
+
// GUI窗口,事件相应、绘制、布局的单元
class GUIWindow
: public WindowBase
@@ -47,6 +66,7 @@ private:
std::string m_Name;
LuaBind::MemberRef m_Script;
+ GUIWindowProxy m_Instance;
BOOL m_MouseTracking;
DWORD m_MouseHoverTime;
diff --git a/Editor/Scripting/Window/GUIWindow.bind.cpp b/Editor/Scripting/Window/GUIWindow.bind.cpp
index 604c26a..7fc0d4d 100644
--- a/Editor/Scripting/Window/GUIWindow.bind.cpp
+++ b/Editor/Scripting/Window/GUIWindow.bind.cpp
@@ -22,12 +22,20 @@ LUA_BIND_IMPL_METHOD(GUIWindow, _New)
LUA_BIND_STATE(L, GUIWindow);
LUA_BIND_CHECK(L, "T");
+ if (!LuaHelper::IsType(state, "GameLab.Editor.Window.GUIWindow", -1))
+ {
+ state.ErrorType(-1, "GameLab.Editor.Window.GUIWindow");
+ return 0;
+ }
+
GUIWindow* wnd = new GUIWindow(state.GetVM());
- if (LuaHelper::IsType(state, "GameLab.Editor.Window.GUIWindow", -1))
- wnd->SetMemberRef(state, wnd->m_Script, -1);
+ wnd->SetMemberRef(state, wnd->m_Script, -1);
+ wnd->m_Instance.owner = wnd;
+ wnd->m_Instance.script = wnd->m_Script;
wnd->PushUserdata(state);
+
return 1;
}