diff options
author | chai <chaifix@163.com> | 2021-10-17 16:01:09 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-17 16:01:09 +0800 |
commit | e13f699ee5f575198552d94ada1167305c82bb2f (patch) | |
tree | d67ff5ec85959f38a62babf856d4fa9f2f0b4147 | |
parent | d35db57d457132dd9d83fa2bd51491b148530655 (diff) |
*misc
27 files changed, 575 insertions, 137 deletions
diff --git a/DefaultContent/Libraries/Math/Euler.lua b/DefaultContent/Libraries/Math/Euler.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/DefaultContent/Libraries/Math/Euler.lua diff --git a/DefaultContent/Libraries/Math/Matrix4x4.lua b/DefaultContent/Libraries/Math/Matrix4x4.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/DefaultContent/Libraries/Math/Matrix4x4.lua diff --git a/DefaultContent/Libraries/Math/Quaternion.lua b/DefaultContent/Libraries/Math/Quaternion.lua new file mode 100644 index 0000000..4c71f52 --- /dev/null +++ b/DefaultContent/Libraries/Math/Quaternion.lua @@ -0,0 +1,4 @@ +local Quaternion = {} + +return Quaternion + diff --git a/DefaultContent/Libraries/Math/Vector2.lua b/DefaultContent/Libraries/Math/Vector2.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/DefaultContent/Libraries/Math/Vector2.lua diff --git a/DefaultContent/Libraries/Math/Vector3.lua b/DefaultContent/Libraries/Math/Vector3.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/DefaultContent/Libraries/Math/Vector3.lua diff --git a/Editor/EditorMain.cpp b/Editor/EditorMain.cpp index 9d77862..8fea1df 100644 --- a/Editor/EditorMain.cpp +++ b/Editor/EditorMain.cpp @@ -4,11 +4,9 @@ #include "Runtime/Scripting/LuaBind.h"
#include "EditorManager.h"
#include "Runtime/Graphics/OpenGL.h"
+#include "Editor/Scripting/EditorScripting.h"
-// Editor入口
-
-
-static int MainMessageLoop() +static int MainLoop() {
BOOL returnValue; MSG msg, lastMsg; @@ -50,6 +48,12 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) OpenLogTags();
WindowUtil::Init();
+ if (!SetupGameLabEditorScripting())
+ {
+ log_error("Can't setup scripting.");
+ return 0;
+ }
+
ContainnerWindow* wnd = new ContainnerWindow();
Vector2f min = Vector2f(100, 100);
Vector2f max = Vector2f(700, 700);
@@ -90,7 +94,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) guiWnd->DoPaint();
guiWnd2->DoPaint();
- MainMessageLoop();
+ MainLoop();
return 0;
}
\ No newline at end of file diff --git a/Editor/GUI/ContainnerWindow.cpp b/Editor/GUI/ContainnerWindow.cpp index 5e6c356..3778485 100644 --- a/Editor/GUI/ContainnerWindow.cpp +++ b/Editor/GUI/ContainnerWindow.cpp @@ -8,11 +8,14 @@ using namespace std; +static bool s_IsMainWindowMaximized; + +extern bool ProcessMainWindowMessages(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT& result); + static PAINTSTRUCT ps; LRESULT CALLBACK ContainnerWindow::ContainerWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { - log_info("WndProc", "ContainnerWindow::ContainerWndProc()"); - + ContainnerWindow *self = (ContainnerWindow*)GetWindowLongPtr(hWnd, GWLP_USERDATA); if (!self) { @@ -20,6 +23,8 @@ LRESULT CALLBACK ContainnerWindow::ContainerWndProc(HWND hWnd, UINT message, WPA return DefWindowProcW(hWnd, message, wParam, lParam); } + //log_info("WndProc", "ContainnerWindow::ContainerWndProc(), ContainnerWindow name is " + self->GetName()); + switch (message) { case WM_MENUSELECT: @@ -48,6 +53,123 @@ LRESULT CALLBACK ContainnerWindow::ContainerWndProc(HWND hWnd, UINT message, WPA UpdateWindow(self->m_Window); return 0; } + case WM_ENTERMENULOOP: // 点击菜单 + + return 0; + case WM_EXITMENULOOP: // 松开菜单 + return 0; + + case WM_KEYDOWN: // key down + case WM_KEYUP: // key up + case WM_SYSKEYDOWN: // 和 WM_KEYDOWN 的区别是可以捕获快捷键或系统命令按键,比如alt键, Ctrl和shift不属于WM_SYSKEYDOWN + case WM_SYSKEYUP: // 和 WM_KEYUP 的区别是可以捕获快捷键或系统命令按键,比如alt键 + if (message == WM_KEYDOWN && wParam == VK_ESCAPE) { + // Escape should close utility container windows + // 如果本窗口是 utility 窗口,关闭它 + if (self->m_ShowMode == ShowMode::kShowUtility) { + self->Close(); + return 0; + } + } + return 0; + + case WM_ERASEBKGND:// WM_ERASEBKGND是在当窗口*背景*必须被擦除时 (例如,窗口的移动,窗口的大小的改变)发送。 + { + // unity的窗口背景色要么是灰色(免费版) ,要么是深黑色(专业版) + // 对于透明窗口 + if (GetWindowLong(hWnd, GWL_EXSTYLE) & WS_EX_LAYERED) { // WS_EX_LAYERED是extendedStyle透明窗口 + // 填充用户区 + RECT rc; + GetClientRect(hWnd, &rc); + FillRect((HDC)wParam, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH)); + } + // do not erase background + // 如果不是透明窗口不要清除背景,跳过DefWindowProc函数 + return 1; + } + + case WM_WINDOWPOSCHANGED: // 窗口大小、位置、z层级改变,即窗口区域改变 + { + if (!self->m_IsClosing && !IsIconic(hWnd)) //IsIconic 窗口是否是最小化(图标化) + { + // OnRectChanged()回调 + self->OnRectChanged(); + } + // WM_WINDOWPOSCHANGED 消息触发后且调用了DefWindowProc会接着发送WM_SIZE和WM_MOVE消息。在WM_WINDOWPOSCHANGED + // 中一起处理大小和位置改变更高效 + /* + By default, the DefWindowProc function sends the WM_SIZE and WM_MOVE messages to the window. + The WM_SIZE and WM_MOVE messages are not sent if an application handles the WM_WINDOWPOSCHANGED + message without calling DefWindowProc. It is more efficient to perform any move or size change + processing during the WM_WINDOWPOSCHANGED message without calling DefWindowProc. + */ + break; + } + + case WM_SIZE: // 窗口大小改变 + if (self->m_ShowMode == ShowMode::kShowMainWindow) + { + if (IsWindowVisible(hWnd)) + { + bool nowMaximized = wParam == SIZE_MAXIMIZED; + if (s_IsMainWindowMaximized != nowMaximized)//更新s_IsMainWindowMaximized变量 + s_IsMainWindowMaximized = nowMaximized; + } + } + break; + + case WM_SETFOCUS: // 窗口获得焦点 + return 0; + + case WM_ACTIVATEAPP: // 编辑器的激活状态改变,所有的窗口都会获得这个消息,和WM_ACTIVATE不同,WM_ACTIVATE只是单个窗口被激活 + // 发送一个 OnActivateApplication 消息 + self->OnActivateApplication(wParam != FALSE); + break; // fall through to main window processing + + + case WM_NCACTIVATE: // non-client active 即非用户区被激活,用这个消息来刷新编辑器 + + break; + + case WM_ACTIVATE: // 单个窗口的激活状态改变 + + return 0; + + case WM_CLOSE: // 窗口关闭消息 + { + bool isMainAndShouldExit = (self->m_ShowMode == kShowMainWindow && !self->m_CloseFromScriptDontShutdown); + if (isMainAndShouldExit) + { + //退出编辑器 + } + else + { + // 关闭此窗口 + ::SetMenu(hWnd, NULL); // 给窗口分配一个菜单,如果是NULL,这个窗口的菜单被删除 + ::DestroyWindow(hWnd); + } + return 0; + } + + case WM_DESTROY: // 窗口被销毁 + + return 0; + + case WM_INITMENUPOPUP: //下拉菜单或子菜单将要被激活的时候 + + return 0; + + case WM_ENTERSIZEMOVE: // 在大小、位置改变前,即当用户点击标题栏、边框 + + return 0; + } + + if (self->m_ShowMode == ShowMode::kShowMainWindow) + { + LRESULT result; + if (ProcessMainWindowMessages(hWnd, message, wParam, lParam, result)) { + return result; + } } long flag = DefWindowProcW(hWnd, message, wParam, lParam); @@ -140,18 +262,14 @@ bool ContainnerWindow::SetRenderContext() } -HWND ContainnerWindow::GetWindowHandle() -{ - return m_Window; -} - // 初始化,创建窗口 -void ContainnerWindow::Init(Rectf pixelRect, int showMode, const Vector2f& minSize, const Vector2f& maxSize) +void ContainnerWindow::Init(Rectf pixelRect, int showMode, const Vector2f& minSize, const Vector2f& maxSize, std::string name) { // Aux windows are mac only. on windows they look just like normal utility windows. if (showMode == kShowAuxWindow) showMode = kShowUtility; + m_Name = name; m_ShowMode = static_cast<ShowMode>(showMode); m_IsClosing = false; m_InMenuLoop = false; @@ -289,3 +407,20 @@ void ContainnerWindow::SetIcon(LPCSTR iconName) if (SendMessage(m_Window, WM_SETICON, ICON_SMALL, (LPARAM)hWindowIcon) != WM_SETICON) log_error("icon error: " + to_string(GetLastError())); } + +void ContainnerWindow::Close() +{ + log_info("Close window " + m_Name); + + SendMessage(m_Window, WM_CLOSE, 0, 0); +} + +void ContainnerWindow::OnRectChanged() +{ + +} + +void ContainnerWindow::OnActivateApplication(bool active) +{ + +} diff --git a/Editor/GUI/EditorWindows.h b/Editor/GUI/EditorWindows.h index 33d99c1..8a146e2 100644 --- a/Editor/GUI/EditorWindows.h +++ b/Editor/GUI/EditorWindows.h @@ -8,6 +8,8 @@ #include "Runtime/Utilities/Singleton.h" #include "Editor/Utils/Log.h" #include "Runtime/Graphics/OpenGL.h" +#include "Runtime/Utilities/UtilMacros.h" +#include "Editor/Utils/HelperFuncs.h" class GUIWindow; @@ -26,6 +28,10 @@ class WindowManager : Singleton<WindowManager> public: static Vector2f GetMousePosition(); static GUIWindow* GetMouseOverWindow(); + +private: + static std::vector<GUIWindow*> s_GUIWindows; + }; // 一个containner window中有多个viewport @@ -46,19 +52,27 @@ public: ContainnerWindow(); ~ContainnerWindow(); - void Init(Rectf size, int showMode, const Vector2f& minSize, const Vector2f& maxSize); + void Init(Rectf size, int showMode, const Vector2f& minSize, const Vector2f& maxSize, std::string name = ""); void SetTitle(const char* title); void SetIcon(LPCSTR iconName); void SetAsRenderContext(); void DoPaint(); + void Close(); + + GET_SET(std::string, Name, m_Name); - HWND GetWindowHandle(); - HDC GetDC() { return m_DC; } - HGLRC GetRC() { return m_RC; } + GET(HWND, WindowHandle, m_Window); + GET(HDC, DC, m_DC); + GET(HGLRC, RC, m_RC); + + void OnRectChanged(); + void OnActivateApplication(bool active); private: bool SetRenderContext(); + std::string m_Name; + HWND m_Window; HDC m_DC; HGLRC m_RC; @@ -90,24 +104,24 @@ public: SplitMode GetSplitMode() { return m_SplitMode; } + GET(SplitMode, SplitMode, m_SplitMode); + private: SplitMode m_SplitMode; GUIWindow* m_GUIWindow; - std::vector<GUIWindow*> m_GUIWindows; + std::vector<GUIWindow*>* m_GUIWindows; }; // GUI窗口,事件相应、绘制、布局的单元 -// 和unity不一样的地方在于一个GUIWindow只会有一个EditorWindow,即一个切页,因为在实际开发中我发现很少会频繁的切换切页,UE逻辑更像blender -// 好处也在于比较好组织 class GUIWindow : public WindowBase { public: static LRESULT CALLBACK GUIViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); static void RepaintAll(); - void Init(); + void Init(std::string name = ""); void DoPaint(); void SetContainnerWindow(ContainnerWindow* wnd); void Focus(); @@ -117,12 +131,16 @@ public: void OnFocus(); void OnLostFocus(); - HDC GetDC() { return m_DC; } - HGLRC GetRC() { return m_RC; } + GET_SET(std::string, Name, m_Name); + GET(HDC, DC, m_DC); + GET(HGLRC, RC, m_RC); private: + void ProcessEventMessages(UINT message, WPARAM wParam, LPARAM lParam); bool SetRenderContext(); + std::string m_Name; + ContainnerWindow* m_ContainnerWindow; HWND m_Handle; HDC m_DC; diff --git a/Editor/GUI/GUIWindow.cpp b/Editor/GUI/GUIWindow.cpp index e13770e..1fe88ca 100644 --- a/Editor/GUI/GUIWindow.cpp +++ b/Editor/GUI/GUIWindow.cpp @@ -2,37 +2,170 @@ #include "WinUtils.h" #include "Runtime/Graphics/OpenGL.h" +static bool RedirectMouseWheel(HWND window, WPARAM wParam, LPARAM lParam) +{ + //// prevent reentrancy + //static bool s_ReentrancyCheck = false; + //if (s_ReentrancyCheck) + // return false; + + //// 找到对应的子窗口 + //GUIWindow* view = GetMouseOverWindow(); + //if (!view) + // return false; + + //// 将鼠标滚轮事件派发到子窗口上去 + //// send mouse wheel to view under mouse + //s_ReentrancyCheck = true; + //::SendMessage(view->GetWindowHandle(), WM_MOUSEWHEEL, wParam, lParam); + //s_ReentrancyCheck = false; + return true; +} + static PAINTSTRUCT ps; LRESULT CALLBACK GUIWindow::GUIViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { - log_info("WndProc", "GUIWindow::GUIViewWndProc(), hWnd=" /*+ (long)hWnd*/); - - GUIWindow* wnd = (GUIWindow*)GetWindowLongPtr(hWnd, GWLP_USERDATA); - if (!wnd) + GUIWindow* self = (GUIWindow*)GetWindowLongPtr(hWnd, GWLP_USERDATA); + if (!self) { log_warning("GUIWindow::GUIViewWndProc(), lParam为空"); return DefWindowProcW(hWnd, message, wParam, lParam); } + //log_info("WndProc", "GUIWindow::GUIViewWndProc(), GUIWindow name is " + wnd->GetName()); + switch (message) { + case WM_ERASEBKGND: + + return 1; + case WM_PAINT: { - log_info("WM_PAINT"); - wnd->SetAsRenderContext(); + log_info("WndProc", "WM_PAINT"); + self->SetAsRenderContext(); glEnable(GL_BLEND); glClearColor(1,0,0,1); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glFlush(); - BeginPaint(wnd->m_Handle, &ps); - EndPaint(wnd->m_Handle, &ps); - UpdateWindow(wnd->m_Handle); + BeginPaint(self->m_Handle, &ps); + EndPaint(self->m_Handle, &ps); + UpdateWindow(self->m_Handle); + return 0; + } + + case WM_MOUSEWHEEL: // 在这个子窗口滚动 + { + // quick check if mouse is in our window + RECT rc; + POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; + ::GetWindowRect(hWnd, &rc); + if (!::PtInRect(&rc, pt)) //如果不在这个子窗口范围内 + { + // 重新派发到鼠标所在的那个窗口上去,这里其实就是之前很多windows用户反映的,明明是在某个窗口上滚动,但由于这个窗口没 + // 被选中,导致滚动事件被触发在选中的那个窗口上 + if (RedirectMouseWheel(hWnd, wParam, lParam)) + return 0; + } + + Assert(self->m_Handle != hWnd); + //self->ProcessEventMessages(message, wParam, lParam); + return 0; + } + + case WM_CAPTURECHANGED: + + return 0; + + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_XBUTTONDOWN: + case WM_LBUTTONUP: + case WM_RBUTTONUP: + case WM_MBUTTONUP: + case WM_XBUTTONUP: + case WM_LBUTTONDBLCLK: + case WM_RBUTTONDBLCLK: + case WM_MBUTTONDBLCLK: + case WM_XBUTTONDBLCLK: + case WM_KEYUP: + case WM_KEYDOWN: + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + case WM_CHAR: + case WM_MOUSEMOVE: + switch (message) + { + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_XBUTTONDOWN: + { + SetFocus(hWnd); + + if (/*processInput && !focused*/ true) + { + //focused = (GetFocus() == hWnd); + + //if (focused) + //{ + // BOOL handled = FALSE; + // ProcessInputMessage(hWnd, message, wParam, lParam, handled); + //} + } + } + break; + } + + // 处理键盘输入,比如输入内容 + self->ProcessEventMessages(message, wParam, lParam); + + case WM_SETCURSOR: + // We're setting the cursor on every WM_MOUSEMOVE. + //We eat the WM_SETCURSOR event here so the OS doesn't conflict with us causing cursor garbage flicker. + return 1; + + case WM_WINDOWPOSCHANGED: + { + // 切换opengl渲染目标,重绘用户区 + //if (self->m_GfxWindow) + //{ + // RECT rect; + // GetClientRect(hWnd, &rect); + // // 大小变动了 + // if (self->m_GfxWindow->GetWidth() != rect.right || self->m_GfxWindow->GetHeight() != rect.bottom) + // { + // // 调用wglMakeCurrent()绑定用户区 + // // GLWindow.cpp > Reshape + // self->m_GfxWindow->Reshape(rect.right, rect.bottom, self->m_DepthFormat, self->m_AntiAlias); + // // 请求重绘 + // self->RequestRepaint(); + // } + + // // Update the scene so that scripts marked with [ExecuteInEditMode] are able to react to screen size changes + // GetApplication().SetSceneRepaintDirty(); + //} return 0; } + + case WM_SETFOCUS: //获得焦点 + return 0; + case WM_KILLFOCUS: //失去焦点 + return 0; + + case WM_ACTIVATE: + break; + + case WM_CLOSE: + delete self; + return 0; + + case WM_INITMENUPOPUP: //下拉菜单或子菜单将要被激活的时候 + return 0; } - long flag = DefWindowProcW(hWnd, message, wParam, lParam); - return flag; + return DefWindowProcW(hWnd, message, wParam, lParam); } void GUIWindow::RepaintAll() @@ -41,10 +174,17 @@ void GUIWindow::RepaintAll() ////////////////////////////////////////////////////////////////////////////////////////// -void GUIWindow::Init() +void GUIWindow::ProcessEventMessages(UINT message, WPARAM wParam, LPARAM lParam) +{ + +} + +void GUIWindow::Init(std::string name) { log_info("Init GUIWindow " /*+ (long)this*/); + m_Name = name; + DWORD windowStyle = WS_CHILD; //DWORD windowStyle = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_MINIMIZEBOX; DWORD extendedStyle = WS_EX_TOOLWINDOW; diff --git a/Editor/GUI/MainWindow.cpp b/Editor/GUI/MainWindow.cpp new file mode 100644 index 0000000..fe4e499 --- /dev/null +++ b/Editor/GUI/MainWindow.cpp @@ -0,0 +1,54 @@ +#include <string> + +#include "EditorWindows.h" +#include "WinUtils.h" +#include "Editor/Utils/HelperFuncs.h" +#include "MenuManager.h" +#include "Runtime/Utilities/Assert.h" + +bool ProcessMainWindowMessages(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT& result) +{ + + //if(message!=WM_TIMER && message!=WM_SETCURSOR) + // printf_console("msg: %s\n", winutils::GetWindowsMessageInfo(message,wParam,lParam).c_str()); + + switch (message) + { + + // Ok, this is fun: when we're using swap chains and no "regular window", often we don't get device loss events, even though it + // looks like the device is put into "lost" state. So whenever anything important changes (resolution, user logs in, etc.), + // try to manually reset the device and repaint everything. Yay! + case WM_SETTINGCHANGE: + // when switching to screen saver, it seems that the only way to detect that is by handling working area change message. + if (wParam == SPI_SETWORKAREA) { + } + break; + case WM_DISPLAYCHANGE: + case WM_DEVMODECHANGE: + case WM_USERCHANGED: + break; + + case WM_COPYDATA: + { + + } + break; + case WM_INITMENU: // 主窗口菜单栏初始化 + + return true; + case WM_COMMAND: // 点击菜单,点击加速键,点击子窗口按钮,点击工具栏按钮。这些时候都有command消息产生。 + + break; + + case WM_ACTIVATEAPP: + + break; + + case WM_DESTROY: + ::PostQuitMessage(0); + break; + } + + return false; +} + diff --git a/Editor/GUI/WindowManager.cpp b/Editor/GUI/WindowManager.cpp index add2066..533435f 100644 --- a/Editor/GUI/WindowManager.cpp +++ b/Editor/GUI/WindowManager.cpp @@ -1,6 +1,8 @@ #include "EditorWindows.h" #include "WinUtils.h" +std::vector<GUIWindow*> WindowManager::s_GUIWindows; + GUIWindow* WindowManager::GetMouseOverWindow() { return NULL; diff --git a/Editor/IMGUI/GUIButton.cpp b/Editor/IMGUI/GUIButton.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Editor/IMGUI/GUIButton.cpp diff --git a/Editor/Resource/ResourceManager.cpp b/Editor/Resource/ResourceManager.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Editor/Resource/ResourceManager.cpp diff --git a/Editor/Resource/ResourceManager.h b/Editor/Resource/ResourceManager.h new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Editor/Resource/ResourceManager.h diff --git a/Editor/Scripting/EditorGUI/ContainerWindow.bind.cpp b/Editor/Scripting/EditorGUI/ContainerWindow.bind.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Editor/Scripting/EditorGUI/ContainerWindow.bind.cpp diff --git a/Editor/Scripting/EditorGUI/EditorGUI.bind.cpp b/Editor/Scripting/EditorGUI/EditorGUI.bind.cpp new file mode 100644 index 0000000..139597f --- /dev/null +++ b/Editor/Scripting/EditorGUI/EditorGUI.bind.cpp @@ -0,0 +1,2 @@ + + diff --git a/Editor/Scripting/EditorGUI/GUIWindow.bind.cpp b/Editor/Scripting/EditorGUI/GUIWindow.bind.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Editor/Scripting/EditorGUI/GUIWindow.bind.cpp diff --git a/Editor/Scripting/EditorGUI/SplitWindow.bind.cpp b/Editor/Scripting/EditorGUI/SplitWindow.bind.cpp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Editor/Scripting/EditorGUI/SplitWindow.bind.cpp diff --git a/Editor/Scripting/EditorScripting.cpp b/Editor/Scripting/EditorScripting.cpp new file mode 100644 index 0000000..7f1d90c --- /dev/null +++ b/Editor/Scripting/EditorScripting.cpp @@ -0,0 +1,15 @@ +#include "EditorScripting.h" +#include "Editor/Utils/Log.h" + +extern void SetupEditorGUI(); +extern void SetupEditorGUILayout(); +extern void SetupEditorIMGUI(); +extern void SetupEditorResource(); + +bool SetupGameLabEditorScripting() +{ + log_info("Scripting", "SetupGameLabEditorScripting()"); + + + return true; +} diff --git a/Editor/Scripting/EditorScripting.h b/Editor/Scripting/EditorScripting.h new file mode 100644 index 0000000..8d32a9d --- /dev/null +++ b/Editor/Scripting/EditorScripting.h @@ -0,0 +1,3 @@ +#pragma once + +bool SetupGameLabEditorScripting(); diff --git a/Editor/Scripting/IMGUI/GUIButton.bind.cpp b/Editor/Scripting/IMGUI/GUIButton.bind.cpp new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Editor/Scripting/IMGUI/GUIButton.bind.cpp @@ -0,0 +1 @@ + diff --git a/Editor/Scripts/EditorMain.lua b/Editor/Scripts/EditorApplication.lua index 2de656d..fb37d69 100644 --- a/Editor/Scripts/EditorMain.lua +++ b/Editor/Scripts/EditorApplication.lua @@ -7,11 +7,9 @@ function ViewEditor:OnGUI() end -function main() - local view = Editor.ContainnerWindow.New(ViewEditor) - -end +-- Editor +local view = Editor.ContainnerWindow.New(ViewEditor) + -main()
\ No newline at end of file diff --git a/Editor/Utils/HelperFuncs.h b/Editor/Utils/HelperFuncs.h index 2ee7932..626e48f 100644 --- a/Editor/Utils/HelperFuncs.h +++ b/Editor/Utils/HelperFuncs.h @@ -5,4 +5,7 @@ std::string to_string(const char* cstr); -extern void PrintCallStack();
\ No newline at end of file +extern void PrintCallStack(); + +#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp)) +#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp)) diff --git a/Projects/VisualStudio/Editor/Editor.vcxproj b/Projects/VisualStudio/Editor/Editor.vcxproj index 6418165..1ae6d0d 100644 --- a/Projects/VisualStudio/Editor/Editor.vcxproj +++ b/Projects/VisualStudio/Editor/Editor.vcxproj @@ -146,12 +146,21 @@ <ClCompile Include="..\..\..\Editor\EditorManager.cpp" /> <ClCompile Include="..\..\..\Editor\GUI\ContainnerWindow.cpp" /> <ClCompile Include="..\..\..\Editor\GUI\Dock.cpp" /> + <ClCompile Include="..\..\..\Editor\GUI\MainWindow.cpp" /> <ClCompile Include="..\..\..\Editor\GUI\WindowManager.cpp" /> <ClCompile Include="..\..\..\Editor\GUI\GUIWindow.cpp" /> <ClCompile Include="..\..\..\Editor\GUI\MenuManager.cpp" /> <ClCompile Include="..\..\..\Editor\GUI\SplitWindow.cpp" /> <ClCompile Include="..\..\..\Editor\GUI\WindowUtil.cpp" /> <ClCompile Include="..\..\..\Editor\GUI\WinUtils.cpp" /> + <ClCompile Include="..\..\..\Editor\IMGUI\GUIButton.cpp" /> + <ClCompile Include="..\..\..\Editor\Resource\ResourceManager.cpp" /> + <ClCompile Include="..\..\..\Editor\Scripting\EditorGUI\ContainerWindow.bind.cpp" /> + <ClCompile Include="..\..\..\Editor\Scripting\EditorGUI\EditorGUI.bind.cpp" /> + <ClCompile Include="..\..\..\Editor\Scripting\EditorGUI\GUIWindow.bind.cpp" /> + <ClCompile Include="..\..\..\Editor\Scripting\EditorGUI\SplitWindow.bind.cpp" /> + <ClCompile Include="..\..\..\Editor\Scripting\EditorScripting.cpp" /> + <ClCompile Include="..\..\..\Editor\Scripting\IMGUI\GUIButton.bind.cpp" /> <ClCompile Include="..\..\..\Editor\Utils\HelperFuncs.cpp" /> <ClCompile Include="..\..\..\Editor\Utils\Log.cpp" /> <ClCompile Include="..\..\..\Runtime\Math\Vector2.cpp" /> @@ -175,6 +184,8 @@ <ClInclude Include="..\..\..\Editor\GUI\MenuManager.h" /> <ClInclude Include="..\..\..\Editor\GUI\Rect.h" /> <ClInclude Include="..\..\..\Editor\GUI\WinUtils.h" /> + <ClInclude Include="..\..\..\Editor\Resource\ResourceManager.h" /> + <ClInclude Include="..\..\..\Editor\Scripting\EditorScripting.h" /> <ClInclude Include="..\..\..\Editor\Utils\HelperFuncs.h" /> <ClInclude Include="..\..\..\Editor\Utils\Log.h" /> <ClInclude Include="..\..\..\Runtime\Math\AABB.h" /> diff --git a/Projects/VisualStudio/Editor/Editor.vcxproj.filters b/Projects/VisualStudio/Editor/Editor.vcxproj.filters index de41fde..5c0cfb5 100644 --- a/Projects/VisualStudio/Editor/Editor.vcxproj.filters +++ b/Projects/VisualStudio/Editor/Editor.vcxproj.filters @@ -31,6 +31,21 @@ <Filter Include="Editor\Scripting"> <UniqueIdentifier>{bfc8b148-db9d-403d-96b9-32c946e15402}</UniqueIdentifier> </Filter> + <Filter Include="Editor\Resource"> + <UniqueIdentifier>{5b8dba28-42d0-450a-98e1-ca4a65a4fc76}</UniqueIdentifier> + </Filter> + <Filter Include="Editor\Scripting\EditorGUI"> + <UniqueIdentifier>{848489fc-f661-4b10-91f5-db1687293b95}</UniqueIdentifier> + </Filter> + <Filter Include="Editor\Scripting\EditorGUILayout"> + <UniqueIdentifier>{87edd159-c171-4ccb-9094-9e5061c980d0}</UniqueIdentifier> + </Filter> + <Filter Include="Editor\Scripting\Resource"> + <UniqueIdentifier>{476cedf1-fc4a-48a5-8782-bed16dabb86e}</UniqueIdentifier> + </Filter> + <Filter Include="Editor\Scripting\IMGUI"> + <UniqueIdentifier>{337f607e-8c00-4e7b-a925-9380e08a30f0}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> <ClCompile Include="..\..\..\Editor\GUI\Dock.cpp"> @@ -108,6 +123,33 @@ <ClCompile Include="..\..\..\Editor\Utils\HelperFuncs.cpp"> <Filter>Editor\Utils</Filter> </ClCompile> + <ClCompile Include="..\..\..\Editor\GUI\MainWindow.cpp"> + <Filter>Editor\GUI</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Editor\Resource\ResourceManager.cpp"> + <Filter>Editor\Resource</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Editor\Scripting\EditorGUI\EditorGUI.bind.cpp"> + <Filter>Editor\Scripting\EditorGUI</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Editor\Scripting\EditorScripting.cpp"> + <Filter>Editor\Scripting</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Editor\Scripting\EditorGUI\ContainerWindow.bind.cpp"> + <Filter>Editor\Scripting\EditorGUI</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Editor\Scripting\EditorGUI\GUIWindow.bind.cpp"> + <Filter>Editor\Scripting\EditorGUI</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Editor\Scripting\EditorGUI\SplitWindow.bind.cpp"> + <Filter>Editor\Scripting\EditorGUI</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Editor\IMGUI\GUIButton.cpp"> + <Filter>Editor\IMGUI</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Editor\Scripting\IMGUI\GUIButton.bind.cpp"> + <Filter>Editor\Scripting\IMGUI</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\..\..\Editor\GUI\Dock.h"> @@ -218,6 +260,12 @@ <ClInclude Include="..\..\..\Editor\GUI\MenuManager.h"> <Filter>Editor\GUI</Filter> </ClInclude> + <ClInclude Include="..\..\..\Editor\Resource\ResourceManager.h"> + <Filter>Editor\Resource</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Editor\Scripting\EditorScripting.h"> + <Filter>Editor\Scripting</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <None Include="..\..\..\Runtime\Scripting\LuaBindClass.inc"> diff --git a/Projects/VisualStudio/Runtime/Runtime.vcxproj b/Projects/VisualStudio/Runtime/Runtime.vcxproj index c0179de..5ce1d52 100644 --- a/Projects/VisualStudio/Runtime/Runtime.vcxproj +++ b/Projects/VisualStudio/Runtime/Runtime.vcxproj @@ -50,20 +50,20 @@ <ClInclude Include="..\..\..\Runtime\Physics\Rigidbody.h" /> <ClInclude Include="..\..\..\Runtime\Profiler\FrameStats.h" /> <ClInclude Include="..\..\..\Runtime\Profiler\Profiler.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_cfunctions.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_class.hpp" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_config.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_enum.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_globalstate.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_internal.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_memberref.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_ref.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_reftable.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_state.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_utility.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_vm.h" /> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_watchdog.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBind.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindCFunctions.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindClass.hpp" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindConfig.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindEnum.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindGlobalState.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindInternal.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindMemberRef.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindRef.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindRefTable.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindState.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindUtility.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindVM.h" /> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindWatchDog.h" /> <ClInclude Include="..\..\..\Runtime\Shaders\ShaderChannel.h" /> <ClInclude Include="..\..\..\Runtime\Shaders\ShaderDefine.h" /> <ClInclude Include="..\..\..\Runtime\Shaders\ShaderUniform.h" /> @@ -107,15 +107,15 @@ <ClCompile Include="..\..\..\Runtime\Mesh\Font.cpp" /> <ClCompile Include="..\..\..\Runtime\Mesh\Mesh.cpp" /> <ClCompile Include="..\..\..\Runtime\Physics\Scripting\wrap_Joint.cpp" /> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_cfunctions.cpp" /> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_class.cpp" /> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_enum.cpp" /> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_memberref.cpp" /> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_ref.cpp" /> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_reftable.cpp" /> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_state.cpp" /> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_vm.cpp" /> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_watchdog.cpp" /> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindCFunctions.cpp" /> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindClass.cpp" /> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindEnum.cpp" /> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindMemberRef.cpp" /> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindRef.cpp" /> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindRefTable.cpp" /> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindState.cpp" /> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindVM.cpp" /> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindWatchDog.cpp" /> <ClCompile Include="..\..\..\Runtime\Shaders\ShaderDefine.cpp" /> <ClCompile Include="..\..\..\Runtime\Threads\Mutex.cpp" /> <ClCompile Include="..\..\..\Runtime\Threads\Semaphore.cpp" /> @@ -134,8 +134,8 @@ </ProjectReference> </ItemGroup> <ItemGroup> - <None Include="..\..\..\Runtime\Scripting\luax_class.inc" /> - <None Include="..\..\..\Runtime\Scripting\luax_state.inc" /> + <None Include="..\..\..\Runtime\Scripting\LuaBindClass.inc" /> + <None Include="..\..\..\Runtime\Scripting\LuaBindState.inc" /> </ItemGroup> <PropertyGroup Label="Globals"> <VCProjectVersion>15.0</VCProjectVersion> diff --git a/Projects/VisualStudio/Runtime/Runtime.vcxproj.filters b/Projects/VisualStudio/Runtime/Runtime.vcxproj.filters index 018dac5..8de44e2 100644 --- a/Projects/VisualStudio/Runtime/Runtime.vcxproj.filters +++ b/Projects/VisualStudio/Runtime/Runtime.vcxproj.filters @@ -135,48 +135,6 @@ <ClInclude Include="..\..\..\Runtime\Graphics\PolyLine.h"> <Filter>Graphics</Filter> </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_cfunctions.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_class.hpp"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_config.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_enum.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_globalstate.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_internal.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_memberref.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_ref.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_reftable.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_state.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_utility.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_vm.h"> - <Filter>Scripting</Filter> - </ClInclude> - <ClInclude Include="..\..\..\Runtime\Scripting\luax_watchdog.h"> - <Filter>Scripting</Filter> - </ClInclude> <ClInclude Include="..\..\..\Runtime\FileSystem\Unzip.h"> <Filter>FileSystem</Filter> </ClInclude> @@ -231,6 +189,48 @@ <ClInclude Include="..\..\..\Runtime\ImGUI\GUILabel.h"> <Filter>ImGUI</Filter> </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBind.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindCFunctions.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindClass.hpp"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindConfig.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindEnum.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindGlobalState.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindInternal.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindMemberRef.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindRef.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindRefTable.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindState.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindUtility.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindVM.h"> + <Filter>Scripting</Filter> + </ClInclude> + <ClInclude Include="..\..\..\Runtime\Scripting\LuaBindWatchDog.h"> + <Filter>Scripting</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <ClCompile Include="..\..\..\Runtime\Mesh\Mesh.cpp"> @@ -297,33 +297,6 @@ <ClCompile Include="..\..\..\Runtime\Graphics\PolyLine.cpp"> <Filter>Graphics</Filter> </ClCompile> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_cfunctions.cpp"> - <Filter>Scripting</Filter> - </ClCompile> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_class.cpp"> - <Filter>Scripting</Filter> - </ClCompile> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_enum.cpp"> - <Filter>Scripting</Filter> - </ClCompile> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_memberref.cpp"> - <Filter>Scripting</Filter> - </ClCompile> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_ref.cpp"> - <Filter>Scripting</Filter> - </ClCompile> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_reftable.cpp"> - <Filter>Scripting</Filter> - </ClCompile> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_state.cpp"> - <Filter>Scripting</Filter> - </ClCompile> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_vm.cpp"> - <Filter>Scripting</Filter> - </ClCompile> - <ClCompile Include="..\..\..\Runtime\Scripting\luax_watchdog.cpp"> - <Filter>Scripting</Filter> - </ClCompile> <ClCompile Include="..\..\..\Runtime\FileSystem\Unzip.cpp"> <Filter>FileSystem</Filter> </ClCompile> @@ -351,12 +324,39 @@ <ClCompile Include="..\..\..\Runtime\ImGUI\GUILabel.cpp"> <Filter>ImGUI</Filter> </ClCompile> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindCFunctions.cpp"> + <Filter>Scripting</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindClass.cpp"> + <Filter>Scripting</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindEnum.cpp"> + <Filter>Scripting</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindMemberRef.cpp"> + <Filter>Scripting</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindRef.cpp"> + <Filter>Scripting</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindRefTable.cpp"> + <Filter>Scripting</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindState.cpp"> + <Filter>Scripting</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindVM.cpp"> + <Filter>Scripting</Filter> + </ClCompile> + <ClCompile Include="..\..\..\Runtime\Scripting\LuaBindWatchDog.cpp"> + <Filter>Scripting</Filter> + </ClCompile> </ItemGroup> <ItemGroup> - <None Include="..\..\..\Runtime\Scripting\luax_class.inc"> + <None Include="..\..\..\Runtime\Scripting\LuaBindClass.inc"> <Filter>Scripting</Filter> </None> - <None Include="..\..\..\Runtime\Scripting\luax_state.inc"> + <None Include="..\..\..\Runtime\Scripting\LuaBindState.inc"> <Filter>Scripting</Filter> </None> </ItemGroup> |