From 86c48c264fb00e3346d299a0888b42e0457b3d7e Mon Sep 17 00:00:00 2001 From: Skyth <19259897+blueskythlikesclouds@users.noreply.github.com> Date: Wed, 29 Jan 2025 13:12:42 +0300 Subject: [PATCH] Adjust options title flash animation. --- UnleashedRecomp/ui/imgui_utils.h | 7 ++++++- UnleashedRecomp/ui/options_menu.cpp | 10 ++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/UnleashedRecomp/ui/imgui_utils.h b/UnleashedRecomp/ui/imgui_utils.h index 1c407e87..0e9855c0 100644 --- a/UnleashedRecomp/ui/imgui_utils.h +++ b/UnleashedRecomp/ui/imgui_utils.h @@ -124,9 +124,14 @@ inline float Scale(float size) return size * g_aspectRatioScale; } +inline double ComputeLinearMotion(double duration, double offset, double total) +{ + return std::clamp((ImGui::GetTime() - duration - offset / 60.0) / total * 60.0, 0.0, 1.0); +} + inline double ComputeMotion(double duration, double offset, double total) { - return sqrt(std::clamp((ImGui::GetTime() - duration - offset / 60.0) / total * 60.0, 0.0, 1.0)); + return sqrt(ComputeLinearMotion(duration, offset, total)); } inline void DrawPauseContainer(GuestTexture* texture, ImVec2 min, ImVec2 max, float alpha = 1) diff --git a/UnleashedRecomp/ui/options_menu.cpp b/UnleashedRecomp/ui/options_menu.cpp index a9b58173..6266ca01 100644 --- a/UnleashedRecomp/ui/options_menu.cpp +++ b/UnleashedRecomp/ui/options_menu.cpp @@ -99,7 +99,7 @@ static void DrawTitle() { static constexpr double fadeOffset = 3.0; static constexpr double fadeDuration = 28.0; - static constexpr double fadeAdditiveDuration = 18.0; + static constexpr double fadeAdditiveDuration = 20.0; static constexpr double squareMoveDuration = 5.0; static constexpr double squareMoveEndDuration = 40.0; static constexpr double squareBlinkDuration = 10.0; @@ -154,9 +154,6 @@ static void DrawTitle() } drawText(Hermite(0.0f, 1.0f, ComputeMotion(g_appearTime, fadeOffset, fadeDuration))); - SetAdditive(true); - drawText(sin(ComputeMotion(g_appearTime, fadeDuration, fadeAdditiveDuration) * std::numbers::pi)); - SetAdditive(false); auto rectMoveMotion = ComputeMotion(g_appearTime, rectMoveMotionOffset, squareMoveDuration); auto rectEndMotion = ComputeMotion(g_appearTime, 0.0, squareMoveEndDuration); @@ -206,6 +203,11 @@ static void DrawTitle() // TODO: apply bevel to this square (may require a new shader modifier, existing ones don't work). drawList->AddRectFilled(rectMin, rectMax, IM_COL32(255, 188, 0, 255 * rectAlphaMotion)); } + + // The flash gets rendered after the rectangle in the original game. + SetAdditive(true); + drawText(1.0 - 2.0 * abs(ComputeLinearMotion(g_appearTime, fadeDuration, fadeAdditiveDuration) - 0.5)); + SetAdditive(false); } static void DrawScanlineBars()