/// <summary> /// Initializes a new instance of the GLWindow class. /// </summary> /// <param name="parent">The parent renderer instance.</param> /// <param name="windowId">The ID of this window.</param> /// <param name="sharedContext">The GLFW pointer to use for sharing GL contexts.</param> /// <param name="keyEventDelegate">The delegate handler for GLFW key events.</param> public RwGlWindow(RwGlWindowManager parent, byte windowId, GlfwWindowPtr sharedContext, GlfwCharFun charEventDelegate, GlfwKeyFun keyEventDelegate) { Size = parent.ParentClient.DisplayResolutions[windowId]; GlfwPointer = Glfw.CreateWindow(Size.Width, Size.Height, parent.ParentClient.ClientWindowTitle, GlfwMonitorPtr.Null, sharedContext); Parent = parent; Id = windowId; // Set GLFW event callbacks for this window // Glfw.SetCharCallback(GlfwPointer, charEventDelegate); Glfw.SetKeyCallback(GlfwPointer, keyEventDelegate); }
static GlfwApp() { s_windowCloseCb = (GlfwWindowPtr wnd) => { if (GetGlfwForm(wnd, out GlFwForm found)) { //user can cancel window close here here bool userCancel = false; GlFwForm.InvokeOnClosing(found, ref userCancel); if (userCancel) { return; } //-------------------------------------- s_latestForm = null; s_latestGlWindowPtr = IntPtr.Zero; //user let this window close *** Glfw.SetWindowShouldClose(wnd, true); Glfw.DestroyWindow(wnd); //destroy this s_existingForms.Remove(wnd); exitingFormList.Remove(found); //-------------------------------------- } }; s_windowFocusCb = (GlfwWindowPtr wnd, bool focus) => { if (GetGlfwForm(wnd, out GlFwForm found)) { GlFwForm.SetFocusState(found, focus); } }; s_windowIconifyCb = (GlfwWindowPtr wnd, bool iconify) => { if (GetGlfwForm(wnd, out GlFwForm found)) { GlFwForm.SetIconifyState(found, iconify); } }; s_windowPosCb = (GlfwWindowPtr wnd, int x, int y) => { if (GetGlfwForm(wnd, out GlFwForm found)) { GlFwForm.InvokeOnWindowMove(found, x, y); } }; s_windowRefreshCb = (GlfwWindowPtr wnd) => { if (GetGlfwForm(wnd, out GlFwForm found)) { GlFwForm.InvokeOnRefresh(found); } }; s_windowSizeCb = (GlfwWindowPtr wnd, int width, int height) => { if (GetGlfwForm(wnd, out GlFwForm found)) { GlFwForm.InvokeOnSizeChanged(found, width, height); } }; s_windowCursorPosCb = (GlfwWindowPtr wnd, double x, double y) => { if (GetGlfwForm(wnd, out GlFwForm found)) { found._latestMouseX = x; found._latestMouseY = y; GlFwForm.InvokeCursorPos(found, x, y); } }; s_windowCursorEnterCb = (GlfwWindowPtr wnd, bool enter) => { if (GetGlfwForm(wnd, out GlFwForm found)) { GlFwForm.SetCursorEnterState(found, enter); } }; s_windowMouseButtonCb = (GlfwWindowPtr wnd, MouseButton btn, KeyActionKind keyAction) => { if (GetGlfwForm(wnd, out GlFwForm found)) { int x = (int)found._latestMouseX; int y = (int)found._latestMouseY; GlFwForm.InvokeMouseButton(found, btn, keyAction, x, y); } }; s_scrollCb = (GlfwWindowPtr wnd, double xoffset, double yoffset) => { if (GetGlfwForm(wnd, out GlFwForm found)) { int x = (int)found._latestMouseX; int y = (int)found._latestMouseY; GlFwForm.InvokeOnScroll(found, x, y, (int)xoffset, (int)yoffset); } }; s_windowKeyCb = (GlfwWindowPtr wnd, Key key, int scanCode, KeyActionKind action, KeyModifiers mods) => { if (GetGlfwForm(wnd, out GlFwForm found)) { GlFwForm.InvokeKey(found, key, scanCode, action, mods); } }; s_windowCharCb = (GlfwWindowPtr wnd, char ch) => { if (GetGlfwForm(wnd, out GlFwForm found)) { GlFwForm.InvokeKeyPress(found, ch); } }; }
public static GlfwCharFun SetCharCallback(GlfwWindowPtr window, GlfwCharFun cbfun) { charFun = cbfun; return(GlfwDelegates.glfwSetCharCallback(window, cbfun)); }
internal static extern GlfwCharFun glfwSetCharCallback(GlfwWindowPtr window, GlfwCharFun cbfun);
internal static extern void glfwSetCharCallback(GlfwCharFun cbfun);
public static void SetCharCallback(GlfwCharFun cbfun) { charFun = cbfun; GlfwDelegates.glfwSetCharCallback(cbfun); }
public static GlfwCharFun SetCharCallback(GlfwWindowPtr window, GlfwCharFun cbfun) { charFun = cbfun; return GLFWDelegates.glfwSetCharCallback(window, cbfun); }
public static void SetCharCallback(GlfwWindowPtr window, GlfwCharFun cbfun) { charFun = cbfun; GlfwDelegates.glfwSetCharCallback(window, cbfun); }
static GlfwApp() { s_windowCloseCb = (GlfwWindowPtr wnd) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { //user can cancel window close here here bool userCancel = false; found.InvokeOnClosing(ref userCancel); if (userCancel) { return; } //-------------------------------------- latestForm = null; latestGlWindowPtr = IntPtr.Zero; //user let this window close *** Glfw.SetWindowShouldClose(wnd, true); Glfw.DestroyWindow(wnd); //destroy this existingForms.Remove(wnd); exitingFormList.Remove(found); //-------------------------------------- } }; s_windowFocusCb = (GlfwWindowPtr wnd, bool focus) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.SetFocusState(focus); } }; s_windowIconifyCb = (GlfwWindowPtr wnd, bool iconify) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.SetIconifyState(iconify); } }; s_windowPosCb = (GlfwWindowPtr wnd, int x, int y) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.InvokeOnMove(x, y); } }; s_windowRefreshCb = (GlfwWindowPtr wnd) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.InvokeOnRefresh(); } }; s_windowSizeCb = (GlfwWindowPtr wnd, int width, int height) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.InvokeOnSizeChanged(width, height); } }; s_windowCursorPosCb = (GlfwWindowPtr wnd, double x, double y) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.InvokeCursorPos(x, y); } }; s_windowCursorEnterCb = (GlfwWindowPtr wnd, bool enter) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.SetCursorEnterState(enter); } }; s_windowMouseButtonCb = (GlfwWindowPtr wnd, MouseButton btn, KeyAction keyAction) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.InvokeMouseButton(btn, keyAction); } }; s_scrollCb = (GlfwWindowPtr wnd, double xoffset, double yoffset) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.InvokeOnScroll(xoffset, yoffset); } }; s_windowKeyCb = (GlfwWindowPtr wnd, Key key, int scanCode, KeyAction action, KeyModifiers mods) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.InvokeKey(key, scanCode, action, mods); } }; s_windowCharCb = (GlfwWindowPtr wnd, char ch) => { GlFwForm found; if (GetGlfwForm(wnd, out found)) { found.InvokeKeyPress(ch); } }; }
public static GlfwCharFun SetCharCallback(WindowPtr window, GlfwCharFun cbfun) { charFun = cbfun; return glfwSetCharCallback(window, cbfun); }
public static GlfwCharFun SetCharCallback(WindowPtr window, GlfwCharFun cbfun) { charFun = cbfun; return(glfwSetCharCallback(window, cbfun)); }