diff options
Diffstat (limited to 'Editor/GUI')
-rw-r--r-- | Editor/GUI/GUIWindow.cpp | 59 | ||||
-rw-r--r-- | Editor/GUI/GUIWindow.h | 17 |
2 files changed, 50 insertions, 26 deletions
diff --git a/Editor/GUI/GUIWindow.cpp b/Editor/GUI/GUIWindow.cpp index 028a654..fe19a95 100644 --- a/Editor/GUI/GUIWindow.cpp +++ b/Editor/GUI/GUIWindow.cpp @@ -12,7 +12,6 @@ using namespace std; GUIWindowProxy::GUIWindowProxy(GUIWindow *owner, LuaBind::MemberRef script) { - } void GUIWindowProxy::OnGUI(LuaBind::State& state) @@ -24,13 +23,41 @@ void GUIWindowProxy::OnGUI(LuaBind::State& state) invoker.Invoke(0); } -void GUIWindowProxy::DoGUI() +void GUIWindowProxy::OnFocus(LuaBind::State& state) { - LuaBind::State state = owner->GetVM()->GetCurThread(); + LuaBind::MemberInvoker invoker = MemberInvoker(state, owner); + invoker.member = script; + invoker.method = "OnFocus"; + invoker.AddMember(script); + invoker.Invoke(0); +} +void GUIWindowProxy::DoGUI(LuaBind::State& state) +{ + OnGUI(state); +} +void GUIWindowProxy::DoClean(LuaBind::State& state) +{ - OnGUI(state); +} + +void GUIWindowProxy::Start(LuaBind::State& state) +{ + LuaBind::MemberInvoker invoker = MemberInvoker(state, owner); + invoker.member = script; + invoker.method = "Start"; + invoker.AddMember(script); + invoker.Invoke(0); +} + +void GUIWindowProxy::Destroy(LuaBind::State& state) +{ + LuaBind::MemberInvoker invoker = MemberInvoker(state, owner); + invoker.member = script; + invoker.method = "Destroy"; + invoker.AddMember(script); + invoker.Invoke(0); } //------------------------------------------------------------------------------------ @@ -232,8 +259,6 @@ void GUIWindow::RepaintAll() { } -//////////////////////////////////////////////////////////// - GUIWindow::GUIWindow(LuaBind::VM* vm, std::string name) : LuaBind::NativeClass<GUIWindow>(vm) { @@ -292,19 +317,15 @@ void GUIWindow::ProcessEventMessages(UINT message, WPARAM wParam, LPARAM lParam) LuaBind::State state = GetVM()->GetCurThread(); SCRIPT_GLOBAL.setCurrentEvent.AddTable(state, ie); - SCRIPT_GLOBAL.setCurrentEvent.Invoke(state, 0); + SCRIPT_GLOBAL.setCurrentEvent.Invoke(state); - SCRIPT_GLOBAL.guiBeginOnGUI.Invoke(state, 0); + SCRIPT_GLOBAL.guiBeginOnGUI.Invoke(state); SetAsRenderContext(); - LuaBind::MemberInvoker invoker = LuaBind::MemberInvoker(state, this); - invoker.member = m_Script; - invoker.method = "OnGUI"; - invoker.AddMember(m_Script); - invoker.Invoke(0); + m_Script.DoGUI(state); - SCRIPT_GLOBAL.guiEndOnGUI.Invoke(state, 0); + SCRIPT_GLOBAL.guiEndOnGUI.Invoke(state); } bool GUIWindow::SetRenderContext() @@ -371,7 +392,8 @@ void GUIWindow::DoPaint() void GUIWindow::OnFocus() { - InvokeLuaCallback(m_Script, "OnFocus"); + LuaBind::State state = GetVM()->GetCurThread(); + m_Script.OnFocus(state); } void GUIWindow::OnLostFocus() @@ -380,11 +402,8 @@ void GUIWindow::OnLostFocus() void GUIWindow::OnPaint() { - LuaBind::MemberInvoker invoker = MemberInvoker(GetVM()->GetCurThread(), this); - invoker.member = m_Script; - invoker.method = "OnGUI"; - invoker.AddMember(m_Script); - invoker.Invoke(0); + LuaBind::State state = GetVM()->GetCurThread(); + m_Script.OnGUI(state); } void GUIWindow::SetPosition(Rect position) diff --git a/Editor/GUI/GUIWindow.h b/Editor/GUI/GUIWindow.h index bbf2687..ed79f26 100644 --- a/Editor/GUI/GUIWindow.h +++ b/Editor/GUI/GUIWindow.h @@ -25,11 +25,17 @@ public: GUIWindowProxy() {} GUIWindowProxy(GUIWindow *owner, LuaBind::MemberRef script); - void DoGUI(); - void DoClean(); + void DoGUI(LuaBind::State& state); + void DoClean(LuaBind::State& state); -private: - void OnGUI(LuaBind::State& state); + //------------------------------------------------------ + // callbacks + //------------------------------------------------------ + + void Start(LuaBind::State& state); + void Destroy(LuaBind::State& state); + void OnGUI(LuaBind::State& state); + void OnFocus(LuaBind::State& state); }; @@ -65,8 +71,7 @@ private: std::string m_Name; - LuaBind::MemberRef m_Script; - GUIWindowProxy m_Instance; + GUIWindowProxy m_Script; BOOL m_MouseTracking; DWORD m_MouseHoverTime; |