diff --git a/libhart/scene/camera.hpp b/libhart/scene/camera.hpp index e92704e..c49cb00 100644 --- a/libhart/scene/camera.hpp +++ b/libhart/scene/camera.hpp @@ -10,40 +10,44 @@ public: Camera(); Camera(int w, int h); - void UpdateView(); + void update(); + bool didUpdate(); + void newFrame(); - glm::mat4 GetViewMatrix(); - glm::mat4 GetProjectionMatrix(); - glm::mat4 GetFrustrumMatrix(); + glm::mat4 getViewMatrix(); + glm::mat4 getProjectionMatrix(); + glm::mat4 getFrustrumMatrix(); - void UpdateProjection(int width, int height); - void UpdateProjection(); + void setRasterViewport(glm::vec2 viewport); // Keyboard - void MoveCamera(uint8_t posDelta); + void moveCamera(uint8_t posDelta); // Mouse Delta - void MouseMoved(glm::vec2 mouseDelta); + void mouseMoved(glm::vec2 mouseDelta); - // Updatable by + void setPosition(glm::vec3 position); + void setEulerLook(float roll, float pitch, float yaw); + void setLook(glm::vec3 lookDirection); + +public: + void setRayViewport(glm::vec2 viewport); + glm::vec2 getRayViewport(); + +public: + // necessary evil float MouseSensitivity = 0.4f; float CameraSpeed = 0.1f; - - void UpdatePosition(glm::vec3 position); - void UpdateEulerLookDirection(float roll, float pitch, float yaw); - void UpdateLookDirection(glm::vec3 lookDirection); - -public: - -public: - glm::vec3 Position = {}; float Roll, Pitch, Yaw; float FOV = 45.0f; + glm::vec3 Position = {}; glm::vec3 LookDirection = {}; private: - glm::vec2 mViewport = {}; + glm::vec2 mViewport = { 100.0f, 100.0f }; + glm::vec2 mRayViewport = { 100.0f, 100.0f }; glm::mat4 mViewMatrix = {}; glm::mat4 mProjMatrix = {}; + bool mDidUpdate; }; diff --git a/src/inferno.cpp b/src/inferno.cpp index 9f71712..d38d213 100644 --- a/src/inferno.cpp +++ b/src/inferno.cpp @@ -151,7 +151,8 @@ int Inferno::run() while (true) { if (!mWin->newFrame()) { break; } - + camera.newFrame(); + // set the main window to the dockspace and then on the first launch set the preset ImGuiID dockspace_id = ImGui::GetID("main"); static ImGuiDockNodeFlags dockspace_flags = ImGuiDockNodeFlags_PassthruCentralNode; @@ -190,10 +191,10 @@ int Inferno::run() { this->stopMoveInput(); } - camera.MouseMoved(mouseDelta); - camera.MoveCamera(movementDelta); + if (glm::length(mouseDelta) > 0.0f) camera.mouseMoved(mouseDelta); + if (movementDelta != 0b00000000) camera.moveCamera(movementDelta); - camera.UpdateProjection(ImGui::GetWindowSize().x, ImGui::GetWindowSize().y); + camera.setRasterViewport({ImGui::GetWindowSize().x, ImGui::GetWindowSize().y}); mRasterRenderer->setTargetSize({ImGui::GetWindowSize().x, ImGui::GetWindowSize().y}); mRasterRenderer->prepare(); mRasterRenderer->draw(); @@ -255,23 +256,25 @@ int Inferno::run() { ImGui::PushItemWidth(100); ImGui::Text("Camera Position X,Y,Z"); - ImGui::DragFloat("X", &camera.Position.x, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); - ImGui::DragFloat("Y", &camera.Position.y, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); - ImGui::DragFloat("Z", &camera.Position.z, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); - camera.UpdatePosition(camera.Position); + bool positionUpdated = false; + ImGui::DragFloat("X", &camera.Position.x, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); if (ImGui::IsItemEdited()) positionUpdated = true; + ImGui::DragFloat("Y", &camera.Position.y, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); if (ImGui::IsItemEdited()) positionUpdated = true; + ImGui::DragFloat("Z", &camera.Position.z, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); if (ImGui::IsItemEdited()) positionUpdated = true; + if (positionUpdated) camera.setPosition(camera.Position); + + bool viewUpdated = false; ImGui::Text("Camera Look Yaw, Pitch, Roll"); - ImGui::DragFloat("Yaw", &camera.Yaw, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); - ImGui::DragFloat("Pitch", &camera.Pitch, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); - ImGui::DragFloat("Roll", &camera.Roll, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); - camera.UpdateView(); + ImGui::DragFloat("Yaw", &camera.Yaw, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); if (ImGui::IsItemEdited()) viewUpdated = true; + ImGui::DragFloat("Pitch", &camera.Pitch, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); if (ImGui::IsItemEdited()) viewUpdated = true; + ImGui::DragFloat("Roll", &camera.Roll, 0.01f, -FLT_MAX, FLT_MAX, "%.2f", ImGuiSliderFlags_None); if (ImGui::IsItemEdited()) viewUpdated = true; ImGui::PopItemWidth(); ImGui::PushItemWidth(300); ImGui::Text("Camera Zoom"); - ImGui::DragFloat("Zoom", &camera.FOV, -0.1f, 0.01f, 180.0f, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); - camera.UpdateProjection(); + ImGui::DragFloat("Zoom", &camera.FOV, -0.1f, 0.01f, 180.0f, "%.2f", ImGuiSliderFlags_None); ImGui::SameLine(); if (ImGui::IsItemEdited()) viewUpdated = true; + if (viewUpdated) camera.update(); ImGui::PopItemWidth(); ImGui::TreePop(); diff --git a/src/preview_renderer/renderer.cpp b/src/preview_renderer/renderer.cpp index b3ab3fa..4fdacdc 100644 --- a/src/preview_renderer/renderer.cpp +++ b/src/preview_renderer/renderer.cpp @@ -99,10 +99,10 @@ void RasterizeRenderer::draw() glUniformMatrix4fv(uniTrans, 1, GL_FALSE, glm::value_ptr(glm::mat4(1.0f))); GLint uniView = glGetUniformLocation(m->getMaterial()->getGlShader()->getProgram(), "view"); - glUniformMatrix4fv(uniView, 1, GL_FALSE, glm::value_ptr(mCurrentScene->getCamera()->GetViewMatrix())); + glUniformMatrix4fv(uniView, 1, GL_FALSE, glm::value_ptr(mCurrentScene->getCamera()->getViewMatrix())); GLint uniProj = glGetUniformLocation(m->getMaterial()->getGlShader()->getProgram(), "proj"); - glUniformMatrix4fv(uniProj, 1, GL_FALSE, glm::value_ptr(mCurrentScene->getCamera()->GetProjectionMatrix())); + glUniformMatrix4fv(uniProj, 1, GL_FALSE, glm::value_ptr(mCurrentScene->getCamera()->getProjectionMatrix())); glBindVertexArray(m->getVAO()); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m->getEBO()); diff --git a/src/renderer/ray_source.cpp b/src/renderer/ray_source.cpp index ba69dcf..b809653 100644 --- a/src/renderer/ray_source.cpp +++ b/src/renderer/ray_source.cpp @@ -15,6 +15,7 @@ RaySource::~RaySource() void RaySource::cameraUpdate(Camera* camera) { mReferenceCamera = camera; + } void RaySource::generate() diff --git a/src/scene/camera.cpp b/src/scene/camera.cpp index 904910b..1515b66 100644 --- a/src/scene/camera.cpp +++ b/src/scene/camera.cpp @@ -15,7 +15,7 @@ Camera::Camera() mViewMatrix = {}; - UpdateView(); + update(); } Camera::Camera(int w, int h) @@ -31,10 +31,10 @@ Camera::Camera(int w, int h) mViewMatrix = {}; - UpdateView(); + update(); } -void Camera::UpdateView() +void Camera::update() { // roll can be removed glm::mat4 matRoll = glm::mat4(1.0f); //identity matrix @@ -52,6 +52,7 @@ void Camera::UpdateView() translate = glm::translate(translate, -Position); mViewMatrix = rotate * translate; + mProjMatrix = glm::perspective(glm::radians(FOV), mViewport.x / mViewport.y, 0.1f, 1000.0f); // Work out Look Vector glm::mat4 inverseView = glm::inverse(mViewMatrix); @@ -59,30 +60,37 @@ void Camera::UpdateView() LookDirection.x = inverseView[2][0]; LookDirection.y = inverseView[2][1]; LookDirection.z = inverseView[2][2]; + + mDidUpdate = true; } -glm::mat4 Camera::GetViewMatrix() +bool Camera::didUpdate() +{ + return mDidUpdate; +} + +void Camera::newFrame() +{ + mDidUpdate = false; +} + +glm::mat4 Camera::getViewMatrix() { return mViewMatrix; } -glm::mat4 Camera::GetProjectionMatrix() +glm::mat4 Camera::getProjectionMatrix() { return mProjMatrix; } -void Camera::UpdateProjection(int width, int height) +void Camera::setRasterViewport(glm::vec2 viewport) { - mViewport = {width, height}; - mProjMatrix = glm::perspective(glm::radians(FOV), (float)width / (float)height, 0.1f, 1000.0f); + mViewport = viewport; + mProjMatrix = glm::perspective(glm::radians(FOV), (float)viewport.x / (float)viewport.y, 0.1f, 1000.0f); } -void Camera::UpdateProjection() -{ - mProjMatrix = glm::perspective(glm::radians(FOV), mViewport.x / mViewport.y, 0.1f, 1000.0f); -} - -void Camera::MoveCamera(uint8_t posDelta) +void Camera::moveCamera(uint8_t posDelta) { if (posDelta == 0) return; @@ -121,7 +129,7 @@ void Camera::MoveCamera(uint8_t posDelta) } // get current view matrix - glm::mat4 mat = GetViewMatrix(); + glm::mat4 mat = getViewMatrix(); glm::vec3 forward(mat[0][2], mat[1][2], mat[2][2]); glm::vec3 strafe(mat[0][0], mat[1][0], mat[2][0]); @@ -130,43 +138,54 @@ void Camera::MoveCamera(uint8_t posDelta) Position += delta * CameraSpeed; // update the view matrix - UpdateView(); + update(); } -void Camera::MouseMoved(glm::vec2 mouseDelta) +void Camera::mouseMoved(glm::vec2 mouseDelta) { if (glm::length(mouseDelta) == 0) return; // note that yaw and pitch must be converted to radians. - // this is done in UpdateView() by glm::rotate + // this is done in update() by glm::rotate Yaw += MouseSensitivity * (mouseDelta.x / 100); Pitch += MouseSensitivity * (mouseDelta.y / 100); Pitch = glm::clamp(Pitch, -M_PI / 2, M_PI / 2); - UpdateView(); + update(); } -void Camera::UpdatePosition(glm::vec3 position) +void Camera::setPosition(glm::vec3 position) { Position = position; - UpdateView(); + update(); } -void Camera::UpdateEulerLookDirection(float roll, float pitch, float yaw) +void Camera::setEulerLook(float roll, float pitch, float yaw) { Roll = roll; Pitch = pitch; Yaw = yaw; LookDirection.x = cos(Yaw) * cos(Pitch); LookDirection.y = sin(Yaw) * cos(Pitch); LookDirection.z = sin(Pitch); - UpdateView(); + update(); } -void Camera::UpdateLookDirection(glm::vec3 lookDirection) +void Camera::setLook(glm::vec3 lookDirection) { LookDirection = lookDirection; Pitch = asin(-lookDirection.y); Yaw = atan2(lookDirection.x, lookDirection.z); - UpdateView(); + update(); } + +void Camera::setRayViewport(glm::vec2 viewport) +{ + mRayViewport = viewport; +} + +glm::vec2 Camera::getRayViewport() +{ + return mRayViewport; +} + diff --git a/src/thirdparty/imgui/imgui.cpp b/src/thirdparty/imgui/imgui.cpp index 3f239a5..755ee0e 100644 --- a/src/thirdparty/imgui/imgui.cpp +++ b/src/thirdparty/imgui/imgui.cpp @@ -1037,10 +1037,10 @@ static ImGuiWindow* FindBlockingModal(ImGuiWindow* window); // Viewports const ImGuiID IMGUI_VIEWPORT_DEFAULT_ID = 0x11111111; // Using an arbitrary constant instead of e.g. ImHashStr("ViewportDefault", 0); so it's easier to spot in the debugger. The exact value doesn't matter. -static ImGuiViewportP* AddUpdateViewport(ImGuiWindow* window, ImGuiID id, const ImVec2& platform_pos, const ImVec2& size, ImGuiViewportFlags flags); +static ImGuiViewportP* Addupdateport(ImGuiWindow* window, ImGuiID id, const ImVec2& platform_pos, const ImVec2& size, ImGuiViewportFlags flags); static void DestroyViewport(ImGuiViewportP* viewport); -static void UpdateViewportsNewFrame(); -static void UpdateViewportsEndFrame(); +static void updateportsNewFrame(); +static void updateportsEndFrame(); static void WindowSelectViewport(ImGuiWindow* window); static void WindowSyncOwnedViewport(ImGuiWindow* window, ImGuiWindow* parent_window_in_stack); static bool UpdateTryMergeWindowIntoHostViewport(ImGuiWindow* window, ImGuiViewportP* host_viewport); @@ -1048,7 +1048,7 @@ static bool UpdateTryMergeWindowIntoHostViewports(ImGuiWindow* windo static bool GetWindowAlwaysWantOwnViewport(ImGuiWindow* window); static int FindPlatformMonitorForPos(const ImVec2& pos); static int FindPlatformMonitorForRect(const ImRect& r); -static void UpdateViewportPlatformMonitor(ImGuiViewportP* viewport); +static void updateportPlatformMonitor(ImGuiViewportP* viewport); } @@ -4142,7 +4142,7 @@ void ImGui::UpdateMouseMovingWindowNewFrame() if (!window_disappared) { // Try to merge the window back into the main viewport. - // This works because MouseViewport should be != MovingWindow->Viewport on release (as per code in UpdateViewports) + // This works because MouseViewport should be != MovingWindow->Viewport on release (as per code in updateports) if (g.ConfigFlagsCurrFrame & ImGuiConfigFlags_ViewportsEnable) UpdateTryMergeWindowIntoHostViewport(moving_window, g.MouseViewport); @@ -4225,7 +4225,7 @@ void ImGui::UpdateMouseMovingWindowEndFrame() } } -// This is called during NewFrame()->UpdateViewportsNewFrame() only. +// This is called during NewFrame()->updateportsNewFrame() only. // Need to keep in sync with SetWindowPos() static void TranslateWindow(ImGuiWindow* window, const ImVec2& delta) { @@ -4653,7 +4653,7 @@ void ImGui::NewFrame() g.FramerateSecPerFrameCount = ImMin(g.FramerateSecPerFrameCount + 1, IM_ARRAYSIZE(g.FramerateSecPerFrame)); g.IO.Framerate = (g.FramerateSecPerFrameAccum > 0.0f) ? (1.0f / (g.FramerateSecPerFrameAccum / (float)g.FramerateSecPerFrameCount)) : FLT_MAX; - UpdateViewportsNewFrame(); + updateportsNewFrame(); // Setup current font and draw list shared data // FIXME-VIEWPORT: the concept of a single ClipRectFullscreen is not ideal! @@ -5335,7 +5335,7 @@ void ImGui::EndFrame() UpdateMouseMovingWindowEndFrame(); // Update user-facing viewport list (g.Viewports -> g.PlatformIO.Viewports after filtering out some) - UpdateViewportsEndFrame(); + updateportsEndFrame(); // Sort the window list so that all child windows are after their parent // We cannot do that on FocusWindow() because children may not exist yet @@ -6970,7 +6970,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) { // This is based on the assumption that the DPI will be known ahead (same as the DPI of the selection done in UpdateSelectWindowViewport) //ImGuiViewport* old_viewport = window->Viewport; - window->Viewport = AddUpdateViewport(window, window->ID, window->Pos, window->Size, ImGuiViewportFlags_NoFocusOnAppearing); + window->Viewport = Addupdateport(window, window->ID, window->Pos, window->Size, ImGuiViewportFlags_NoFocusOnAppearing); // FIXME-DPI //IM_ASSERT(old_viewport->DpiScale == window->Viewport->DpiScale); // FIXME-DPI: Something went wrong @@ -12916,16 +12916,16 @@ static void WindowSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandl // - TranslateWindowsInViewport() [Internal] // - ScaleWindowsInViewport() [Internal] // - FindHoveredViewportFromPlatformWindowStack() [Internal] -// - UpdateViewportsNewFrame() [Internal] -// - UpdateViewportsEndFrame() [Internal] -// - AddUpdateViewport() [Internal] +// - updateportsNewFrame() [Internal] +// - updateportsEndFrame() [Internal] +// - Addupdateport() [Internal] // - WindowSelectViewport() [Internal] // - WindowSyncOwnedViewport() [Internal] // - UpdatePlatformWindows() // - RenderPlatformWindowsDefault() // - FindPlatformMonitorForPos() [Internal] // - FindPlatformMonitorForRect() [Internal] -// - UpdateViewportPlatformMonitor() [Internal] +// - updateportPlatformMonitor() [Internal] // - DestroyPlatformWindow() [Internal] // - DestroyPlatformWindows() //----------------------------------------------------------------------------- @@ -13097,7 +13097,7 @@ ImGuiViewportP* ImGui::FindHoveredViewportFromPlatformWindowStack(const ImVec2& // Update viewports and monitor infos // Note that this is running even if 'ImGuiConfigFlags_ViewportsEnable' is not set, in order to clear unused viewports (if any) and update monitor info. -static void ImGui::UpdateViewportsNewFrame() +static void ImGui::updateportsNewFrame() { ImGuiContext& g = *GImGui; IM_ASSERT(g.PlatformIO.Viewports.Size <= g.Viewports.Size); @@ -13133,7 +13133,7 @@ static void ImGui::UpdateViewportsNewFrame() main_viewport_pos = main_viewport->Pos; // Preserve last pos/size when minimized (FIXME: We don't do the same for Size outside of the viewport path) main_viewport_size = main_viewport->Size; } - AddUpdateViewport(NULL, IMGUI_VIEWPORT_DEFAULT_ID, main_viewport_pos, main_viewport_size, ImGuiViewportFlags_OwnedByApp | ImGuiViewportFlags_CanHostOtherWindows); + Addupdateport(NULL, IMGUI_VIEWPORT_DEFAULT_ID, main_viewport_pos, main_viewport_size, ImGuiViewportFlags_OwnedByApp | ImGuiViewportFlags_CanHostOtherWindows); g.CurrentDpiScale = 0.0f; g.CurrentViewport = NULL; @@ -13167,7 +13167,7 @@ static void ImGui::UpdateViewportsNewFrame() } // Update/copy monitor info - UpdateViewportPlatformMonitor(viewport); + updateportPlatformMonitor(viewport); // Lock down space taken by menu bars and status bars, reset the offset for functions like BeginMainMenuBar() to alter them again. viewport->WorkOffsetMin = viewport->BuildWorkOffsetMin; @@ -13272,7 +13272,7 @@ static void ImGui::UpdateViewportsNewFrame() } // Update user-facing viewport list (g.Viewports -> g.PlatformIO.Viewports after filtering out some) -static void ImGui::UpdateViewportsEndFrame() +static void ImGui::updateportsEndFrame() { ImGuiContext& g = *GImGui; g.PlatformIO.Viewports.resize(0); @@ -13293,7 +13293,7 @@ static void ImGui::UpdateViewportsEndFrame() } // FIXME: We should ideally refactor the system to call this every frame (we currently don't) -ImGuiViewportP* ImGui::AddUpdateViewport(ImGuiWindow* window, ImGuiID id, const ImVec2& pos, const ImVec2& size, ImGuiViewportFlags flags) +ImGuiViewportP* ImGui::Addupdateport(ImGuiWindow* window, ImGuiID id, const ImVec2& pos, const ImVec2& size, ImGuiViewportFlags flags) { ImGuiContext& g = *GImGui; IM_ASSERT(id != 0); @@ -13328,7 +13328,7 @@ ImGuiViewportP* ImGui::AddUpdateViewport(ImGuiWindow* window, ImGuiID id, const viewport->Pos = viewport->LastPos = pos; viewport->Size = size; viewport->Flags = flags; - UpdateViewportPlatformMonitor(viewport); + updateportPlatformMonitor(viewport); g.Viewports.push_back(viewport); IMGUI_DEBUG_LOG_VIEWPORT("[viewport] Add Viewport %08X '%s'\n", id, window ? window->Name : ""); @@ -13414,7 +13414,7 @@ static void ImGui::WindowSelectViewport(ImGuiWindow* window) { window->Viewport = (ImGuiViewportP*)FindViewportByID(window->ViewportId); if (window->Viewport == NULL && window->ViewportPos.x != FLT_MAX && window->ViewportPos.y != FLT_MAX) - window->Viewport = AddUpdateViewport(window, window->ID, window->ViewportPos, window->Size, ImGuiViewportFlags_None); + window->Viewport = Addupdateport(window, window->ID, window->ViewportPos, window->Size, ImGuiViewportFlags_None); } } @@ -13444,12 +13444,12 @@ static void ImGui::WindowSelectViewport(ImGuiWindow* window) } else if (GetWindowAlwaysWantOwnViewport(window)) { - window->Viewport = AddUpdateViewport(window, window->ID, window->Pos, window->Size, ImGuiViewportFlags_None); + window->Viewport = Addupdateport(window, window->ID, window->Pos, window->Size, ImGuiViewportFlags_None); } else if (g.MovingWindow && g.MovingWindow->RootWindowDockTree == window && IsMousePosValid()) { if (window->Viewport != NULL && window->Viewport->Window == window) - window->Viewport = AddUpdateViewport(window, window->ID, window->Pos, window->Size, ImGuiViewportFlags_None); + window->Viewport = Addupdateport(window, window->ID, window->Pos, window->Size, ImGuiViewportFlags_None); } else { @@ -13464,7 +13464,7 @@ static void ImGui::WindowSelectViewport(ImGuiWindow* window) // Fallback: merge in default viewport if z-order matches, otherwise create a new viewport if (window->Viewport == NULL) if (!UpdateTryMergeWindowIntoHostViewport(window, main_viewport)) - window->Viewport = AddUpdateViewport(window, window->ID, window->Pos, window->Size, ImGuiViewportFlags_None); + window->Viewport = Addupdateport(window, window->ID, window->Pos, window->Size, ImGuiViewportFlags_None); // Mark window as allowed to protrude outside of its viewport and into the current monitor if (!lock_viewport) @@ -13496,7 +13496,7 @@ static void ImGui::WindowSelectViewport(ImGuiWindow* window) else if (!UpdateTryMergeWindowIntoHostViewports(window)) // Merge? { // New viewport - window->Viewport = AddUpdateViewport(window, window->ID, window->Pos, window->Size, ImGuiViewportFlags_NoFocusOnAppearing); + window->Viewport = Addupdateport(window, window->ID, window->Pos, window->Size, ImGuiViewportFlags_NoFocusOnAppearing); } } else if (window->ViewportAllowPlatformMonitorExtend < 0 && (flags & ImGuiWindowFlags_ChildWindow) == 0) @@ -13547,10 +13547,10 @@ void ImGui::WindowSyncOwnedViewport(ImGuiWindow* window, ImGuiWindow* parent_win } window->Viewport->UpdateWorkRect(); - // The viewport may have changed monitor since the global update in UpdateViewportsNewFrame() + // The viewport may have changed monitor since the global update in updateportsNewFrame() // Either a SetNextWindowPos() call in the current frame or a SetWindowPos() call in the previous frame may have this effect. if (viewport_rect_changed) - UpdateViewportPlatformMonitor(window->Viewport); + updateportPlatformMonitor(window->Viewport); // Update common viewport flags const ImGuiViewportFlags viewport_flags_to_clear = ImGuiViewportFlags_TopMost | ImGuiViewportFlags_NoTaskBarIcon | ImGuiViewportFlags_NoDecoration | ImGuiViewportFlags_NoRendererClear; @@ -13809,7 +13809,7 @@ static int ImGui::FindPlatformMonitorForRect(const ImRect& rect) } // Update monitor from viewport rectangle (we'll use this info to clamp windows and save windows lost in a removed monitor) -static void ImGui::UpdateViewportPlatformMonitor(ImGuiViewportP* viewport) +static void ImGui::updateportPlatformMonitor(ImGuiViewportP* viewport) { viewport->PlatformMonitor = (short)FindPlatformMonitorForRect(viewport->GetMainRect()); }