summaryrefslogtreecommitdiff
path: root/Editor/Scripting/Window/GUIWindow.bind.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-11-11 18:27:36 +0800
committerchai <chaifix@163.com>2021-11-11 18:27:36 +0800
commit0e0aa82ab2ebc9f15519cea710a52c5895690152 (patch)
tree57e91039458549dadb4e904d537be26fe792b855 /Editor/Scripting/Window/GUIWindow.bind.cpp
parent36f42b74630d4bca2d1d276d57c4c967d0290380 (diff)
* rename Editor.GUI to Editor.Window
Diffstat (limited to 'Editor/Scripting/Window/GUIWindow.bind.cpp')
-rw-r--r--Editor/Scripting/Window/GUIWindow.bind.cpp70
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;
+}