Adjust options title flash animation.

This commit is contained in:
Skyth 2025-01-29 13:12:42 +03:00
parent 46fee603b7
commit 86c48c264f
2 changed files with 12 additions and 5 deletions

View file

@ -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)

View file

@ -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()