diff options
Diffstat (limited to 'Editor/Scripting/Window/GUIWindow.bind.cpp')
-rw-r--r-- | Editor/Scripting/Window/GUIWindow.bind.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Editor/Scripting/Window/GUIWindow.bind.cpp b/Editor/Scripting/Window/GUIWindow.bind.cpp new file mode 100644 index 0000000..604c26a --- /dev/null +++ b/Editor/Scripting/Window/GUIWindow.bind.cpp @@ -0,0 +1,70 @@ +#include "Editor/GUI/EditorWindows.h" +#include "Runtime/Math/Math.h" + +LUA_BIND_REGISTRY(GUIWindow) +{ + LUA_BIND_REGISTER_METHODS(state, + { "DoPaint", _DoPaint }, + { "Focus", _Focus }, + { "SetContainerWindow", _SetContainerWindow }, + { "SetPosition", _SetPosition }, + { "New", _New } + ); +} + +LUA_BIND_POSTPROCESS(GUIWindow) +{ +} + +// GUIWindow.New([script]) +LUA_BIND_IMPL_METHOD(GUIWindow, _New) +{ + LUA_BIND_STATE(L, GUIWindow); + LUA_BIND_CHECK(L, "T"); + + GUIWindow* wnd = new GUIWindow(state.GetVM()); + + if (LuaHelper::IsType(state, "GameLab.Editor.Window.GUIWindow", -1)) + wnd->SetMemberRef(state, wnd->m_Script, -1); + + wnd->PushUserdata(state); + return 1; +} + +LUA_BIND_IMPL_METHOD(GUIWindow, _DoPaint) +{ + LUA_BIND_PREPARE(L, GUIWindow); + self->DoPaint(); + return 0; +} + +LUA_BIND_IMPL_METHOD(GUIWindow, _Focus) +{ + LUA_BIND_PREPARE(L, GUIWindow); + self->Focus(); + return 0; +} + +LUA_BIND_IMPL_METHOD(GUIWindow, _SetContainerWindow) +{ + LUA_BIND_PREPARE(L, GUIWindow); + ContainerWindow* wnd = state.GetUserdata<ContainerWindow>(2); + self->SetContainerWindow(wnd); + return 0; +} + +// GUIWindow.SetPosition(self, {x, y, width, height}) +LUA_BIND_IMPL_METHOD(GUIWindow, _SetPosition) +{ + LUA_BIND_PREPARE(L, GUIWindow); + if (!state.CheckParams(1, "UT")) + return 0; + + Rect rect; + rect.x = state.GetField<float>(2, 1, 0); + rect.y = state.GetField<float>(2, 2, 0); + rect.width = state.GetField<float>(2, 3, 0); + rect.height = state.GetField<float>(2, 4, 0); + self->SetPosition(rect); + return 0; +} |