From ee0701c4749842a217ccc5bc926fa699507d5354 Mon Sep 17 00:00:00 2001 From: Nikolaos Patsiouras Date: Sat, 9 Mar 2019 17:10:09 +0200 Subject: [PATCH 1/2] * Copied over changes from latest ImGuizmo.cpp. --- 3rdparty/dear-imgui/widgets/gizmo.inl | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/3rdparty/dear-imgui/widgets/gizmo.inl b/3rdparty/dear-imgui/widgets/gizmo.inl index 1c98ad606..599d06fc2 100644 --- a/3rdparty/dear-imgui/widgets/gizmo.inl +++ b/3rdparty/dear-imgui/widgets/gizmo.inl @@ -736,12 +736,17 @@ namespace ImGuizmo const ImU32 flags = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoInputs | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoBringToFrontOnFocus; ImGui::SetNextWindowSize(io.DisplaySize); - - ImGui::PushStyleColor(ImGuiCol_WindowBg, 0); + ImGui::SetNextWindowPos(ImVec2(0, 0)); + + ImGui::PushStyleColor(ImGuiCol_WindowBg, 0); + ImGui::PushStyleColor(ImGuiCol_Border, 0); + ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f); + ImGui::Begin("gizmo", NULL, flags); gContext.mDrawList = ImGui::GetWindowDrawList(); ImGui::End(); - ImGui::PopStyleColor(); + ImGui::PopStyleVar(); + ImGui::PopStyleColor(2); } bool IsUsing() @@ -860,8 +865,9 @@ namespace ImGuizmo belowAxisLimit = gContext.mBelowAxisLimit[axisIndex]; belowPlaneLimit = gContext.mBelowPlaneLimit[axisIndex]; - dirPlaneX *= gContext.mAxisFactor[axisIndex]; - dirPlaneY *= gContext.mAxisFactor[(axisIndex + 1) % 3]; + dirAxis *= gContext.mAxisFactor[axisIndex]; + dirPlaneX *= gContext.mAxisFactor[(axisIndex + 1) % 3]; + dirPlaneY *= gContext.mAxisFactor[(axisIndex + 2) % 3]; } else { @@ -891,7 +897,7 @@ namespace ImGuizmo // and store values gContext.mAxisFactor[axisIndex] = mulAxis; - gContext.mAxisFactor[(axisIndex + 1) % 3] = mulAxisY; + gContext.mAxisFactor[(axisIndex + 1) % 3] = mulAxisX; gContext.mAxisFactor[(axisIndex + 2) % 3] = mulAxisY; gContext.mBelowAxisLimit[axisIndex] = belowAxisLimit; gContext.mBelowPlaneLimit[axisIndex] = belowPlaneLimit; @@ -1851,7 +1857,7 @@ namespace ImGuizmo // behind camera vec_t camSpacePosition; camSpacePosition.TransformPoint(makeVect(0.f, 0.f, 0.f), gContext.mMVP); - if (camSpacePosition.z < 0.001f) + if (!gContext.mIsOrthographic && camSpacePosition.z < 0.001f) return; // -- From 85e567b67ebf4872651b066ceb2c819df03c2fe0 Mon Sep 17 00:00:00 2001 From: Nikolaos Patsiouras Date: Sat, 9 Mar 2019 17:11:26 +0200 Subject: [PATCH 2/2] * Applied fix for local mode Scaling gizmo not taking into account prior transformations when raycasting the handles. --- 3rdparty/dear-imgui/widgets/gizmo.inl | 1 + 1 file changed, 1 insertion(+) diff --git a/3rdparty/dear-imgui/widgets/gizmo.inl b/3rdparty/dear-imgui/widgets/gizmo.inl index 599d06fc2..86336f2bd 100644 --- a/3rdparty/dear-imgui/widgets/gizmo.inl +++ b/3rdparty/dear-imgui/widgets/gizmo.inl @@ -1433,6 +1433,7 @@ namespace ImGuizmo bool belowAxisLimit, belowPlaneLimit; ComputeTripodAxisAndVisibility(i, dirAxis, dirPlaneX, dirPlaneY, belowAxisLimit, belowPlaneLimit); + dirAxis.TransformVector(gContext.mModel); const float len = IntersectRayPlane(gContext.mRayOrigin, gContext.mRayVector, BuildPlan(gContext.mModel.v.position, dirAxis)); vec_t posOnPlan = gContext.mRayOrigin + gContext.mRayVector * len;