diff options
Diffstat (limited to 'Editor/GUI')
-rw-r--r-- | Editor/GUI/GUIWindow.cpp | 27 | ||||
-rw-r--r-- | Editor/GUI/GUIWindow.h | 20 |
2 files changed, 46 insertions, 1 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; |