From c87000a5e48d2cf3afdf308189767951eb819c09 Mon Sep 17 00:00:00 2001 From: hgn Date: Tue, 21 Dec 2021 00:07:02 +0000 Subject: [PATCH] level smooth transition camera --- fishladder.c | 15 +++++++++++---- maps/cmp_b11.map | 2 ++ vg/vg_m.h | 6 ++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/fishladder.c b/fishladder.c index e90a8a5..fcdd58d 100644 --- a/fishladder.c +++ b/fishladder.c @@ -1211,16 +1211,23 @@ void vg_update(void) r2 = (float)world.h / (float)world.w, size; - size = ( r2 < r1? (float)(world.w+5) * 0.5f: ((float)world.h * 0.5f) / r1 ) + 2.5f; - m3x3_projection( m_projection, -size, size, -size*r1, size*r1 ); + static float size_current = 2.0f; + static v3f origin_current = { 0.0f, 0.0f, 0.0f }; + + size = ( r2 < r1? (float)(world.w+5) * 0.5f: ((float)(world.h+5) * 0.5f) / r1 ) + 0.5f; v3f origin; - origin[0] = floorf( -0.5f * ((float)world.w-3.0f) ); + origin[0] = floorf( -0.5f * ((float)world.w-4.5f) ); origin[1] = floorf( -0.5f * world.h ); origin[2] = 0.0f; + // Lerp towards target + size_current = vg_lerpf( size_current, size, vg_time_delta * 6.0f ); + v2_lerp( origin_current, origin, vg_time_delta * 6.0f, origin_current ); + + m3x3_projection( m_projection, -size_current, size_current, -size_current*r1, size_current*r1 ); m3x3_identity( m_view ); - m3x3_translate( m_view, origin ); + m3x3_translate( m_view, origin_current ); m3x3_mul( m_projection, m_view, vg_pv ); vg_projection_update(); diff --git a/maps/cmp_b11.map b/maps/cmp_b11.map index 5154c5e..77a8fe1 100644 --- a/maps/cmp_b11.map +++ b/maps/cmp_b11.map @@ -1,5 +1,7 @@ ###########; ##-#####-##;a,aa +## ##### ##; ## ##; +##### #####; #####+#####;aaa ###########; diff --git a/vg/vg_m.h b/vg/vg_m.h index 6276edb..a567092 100644 --- a/vg/vg_m.h +++ b/vg/vg_m.h @@ -145,6 +145,12 @@ static inline float v2_dist( v2f a, v2f b ) return sqrtf( v2_dist2( a, b ) ); } +static inline void v2_lerp( v2f a, v2f b, float t, v2f d ) +{ + d[0] = a[0] + t*(b[0]-a[0]); + d[1] = a[1] + t*(b[1]-a[1]); +} + // Vector 3 // ================================================================================================================== -- 2.25.1